原本安装pyflann应该是很简单的一件事,但是似乎作者没有考虑到这些,他用的应该是Ubuntu吧,即不兼容CentOS,也无法在Mac OS上面用。
FLANN
目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。
FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces.
Mac OS安装flann
方法比较简单。。
brew install flann
或者
sudo port install flann
CentOS安装flann
CentOS安装flann 以及pyflann
yum install flann
yum insall flann-python
但是都存在问题
CentOS pyflann报错
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
Mac OS pyflann报错
这个问题真心比较坑爹
Mac OS site-packages
查看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
或许您还需要下面的文章: