如何使用dlib进行Python导入(使用cmake和osx)

时间:2015-05-05 00:11:10

标签: python cmake dlib

很抱歉,如果这是基本的,但我正在尝试安装dlib以与(the source)中提到的python一起使用“在Python中创建自己的对象检测器!”。

我按照安装说明(http://blog.dlib.net/2014/04/dlib-187-released-make-your-own-object.html)下载了安装文件,解压缩并使用了cmake

[UIScreen mainScreen].scale

似乎工作正常

但是在Python中输入“import dlib”只会给出ImportError:没有名为dlib的模块。

我知道如何告诉Python如何查找/使用该东西吗?

9 个答案:

答案 0 :(得分:8)

请注意,现在最简单的安装方法是使用:

sudo python setup.py install

答案 1 :(得分:5)

您可以将-DPYTHON_LIBRARY:FILEPATH=/path/to/your/libpython2.7.dylib传递给cmake,而不是手动编辑文件。

./compile_dlib_python_module.bat做的是

mkdir build
cd build
cmake ../../tools/python

因此,只需逐个运行命令,而不是

cmake ../../tools/python

运行

cmake ../../tools/python -DPYTHON_LIBRARY:FILEPATH=/usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib

答案 2 :(得分:5)

OSX(python3)的Dlib安装说明

brew uninstall boost-python
brew uninstall boost
brew install boost-python --with-python3 --without-python

安装默认dlib

pip3 install dlib

以下提供一些加速 安装启用了AVX,SSE2,SSE4指令的dlib(从dlib.net下载源代码并从目录中执行)。

python setup.py install --yes USE_AVX_INSTRUCTIONS --yes USE_SSE2_INSTRUCTIONS --yes USE_SSE4_INSTRUCTIONS

答案 3 :(得分:4)

我终于开始工作了!我稍后会发布一篇关于此的详细博客文章,但这是现在的要点。基本上,当我手动检查cmake的输出时,dlib正在编译和链接系统版本的Python 而不是的Homebrew版本的python。

如果您对详细信息感兴趣,似乎cmake正在尝试编译并链接/usr/lib/libpython2.7.dylib。但是,这是Python的系统版本。它应该编译一个与/usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib的链接,这是Python的Homebrew版本。

我手动编辑CMakeFiles/dlib_.dir/build.make/CMakeFiles/dlib_.dir/link.txt以指向Homebrew dylib文件而不是系统文件。我能够编译dlib然后在没有段错误的情况下运行它。此外,我能够毫无问题地运行物体探测器。

答案 4 :(得分:1)

您正在编译C ++示例程序。 python示例位于python_examples文件夹中。此外,每个示例都在顶部有说明,告诉您如何使用它。

答案 5 :(得分:1)

如果你使用Conda,那就容易多了。

conda install -c menpo dlib

https://anaconda.org/menpo/dlib

答案 6 :(得分:0)

用于Python 3支持使用:

python setup.py install --yes DPYTHON3

答案 7 :(得分:0)

如果您已经通过cmake命令从github编译了dlib源代码。 然后你想运行python程序来调用dlib api。

您应该编译dlib Python API,如下所示

class Book:
    def __init__(self, *args, **kwargs):
       attributes = ['name', 'author']
       for item in zip(attributes, args):
           kwargs[item[0]] = item[1]
       self.name = kwargs.get('name')
       self.author = kwargs.get('author')

    def show(self):
        print('Name={name}, author={author}'.format(name=self.name, author=self.author))

book1 = Book('Python', 'Guido')
book1.show()
book2 = Book(name='Python', author='Guido')
book2.show()
book3 = Book('Python', author='Guido')

或者

Name=Python, author=Guido
Name=Python, author=Guido
Name=Python, author=Guido

如果你有一个支持AVX指令的CPU,因为这会使一些事情运行得更快。请注意,您需要安装boost-python来编译Python API。(从dlib README.md链接)

它对我有用。

答案 8 :(得分:0)

我跟你说了同样的错误。

当我查看文件夹"C:\Anaconda3\Lib\site-packages"时,我找到"dlib-19.8.0-py3.4-win-amd64.egg\",这意味着我已成功编译dlib,但"dlib\"下没有"C:\Anaconda3\Lib\site-packages"文件夹,它在"dlib-19.8.0-py3.4-win-amd64.egg\"文件夹中,所以解决方案很简单:只需将"dlib\"文件夹复制到路径"C:\Anaconda3\Lib\site-packages",Python解释器就会找到该模块并成功导入它。

希望它会有所帮助!

enter image description here