原本安装pyflann应该是很简单的一件事,但是似乎作者没有考虑到这些,他用的应该是Ubuntu吧,即不兼容CentOS,也无法在Mac OS上面用。
目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。
FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces.
方法比较简单。。
brew install flann
或者
sudo port install flann
CentOS安装flann 以及pyflann
yum install flann
yum insall flann-python
但是都存在问题
raise ImportError('Cannot load dynamic library. Did you compile FLANN?')
ImportError: Cannot load dynamic library. Did you compile FLANN?
这个总是好解决,查看一下site-packages下面的flann_ctypes.py
就会发现
libnames = ['libflann.so']
libdir = 'lib'
if sys.platform == 'win32':
libnames = ['flann.dll', 'libflann.dll']
elif sys.platform == 'darwin':
libnames = ['libflann.dylib']
while root_dir!=None:
for libname in libnames:
try:
#print "Trying ",os.path.join(root_dir,'lib',libname)
flannlib = cdll[os.path.join(root_dir,libdir,libname)]
return flannlib
except Exception:
pass
try:
flannlib = cdll[os.path.join(root_dir,"build",libdir,libname)]
return flannlib
except Exception:
pass
tmp = os.path.dirname(root_dir)
if tmp == root_dir:
root_dir = None
else:
root_dir = tmp
库的名字是libflann.so
,从/usr/lib
下面复制过来
cp /usr/lib/libflann.so.1.7 /usr/lib/python2.6/site-packages/pyflann/lib
这个问题真心比较坑爹
查看site-packages路径的方法
Python 2.7.5 (default, Sep 12 2013, 21:33:34)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import site;
>>> site.getsitepackages();
['/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/Library/Python/2.7/site-packages']
>>> exit;
所以我们需要cd到这个目录
cd /Library/Python/2.7/site-packages/pyflann-1.6.11-py2.7.egg/pyflann
遇到这个错误时
ImportError: No module named bindings.flann_ctypes
需要建个bindings再将flann_ctypes等文件拷贝过去
接着再需要从某个linux机器上,或者从代码中拷贝出io
围观我的Github Idea墙, 也许,你会遇到心仪的项目