Blog

Blog

PHODAL

Mac OS CentOS 安装flann pyflann

原本安装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


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签