如何让Python导入与dlib一起工作(使用cmake和osx)
很抱歉,如果这是基本的,但我正在尝试安装dlib以与python一起使用,如()“用python制作您自己的对象检测器!” 我下载了安装文件,解压缩并使用了安装说明中的cmake() 看起来效果不错 然而,在Python中键入“import dlib”只会产生ImportError:没有名为dlib的模块如何让Python导入与dlib一起工作(使用cmake和osx),python,cmake,dlib,Python,Cmake,Dlib,很抱歉,如果这是基本的,但我正在尝试安装dlib以与python一起使用,如()“用python制作您自己的对象检测器!” 我下载了安装文件,解压缩并使用了安装说明中的cmake() 看起来效果不错 然而,在Python中键入“import dlib”只会产生ImportError:没有名为dlib的模块 你知道我如何告诉Python如何查找/使用这个东西吗?< /P> < p>你正在编译C++示例程序。python示例位于python_examples文件夹中。此外,每个示例顶部都有说明,告诉
你知道我如何告诉Python如何查找/使用这个东西吗?< /P> < p>你正在编译C++示例程序。python示例位于python_examples文件夹中。此外,每个示例顶部都有说明,告诉您如何使用它。在ubuntu上,我必须执行以下操作:
sudo apt-get install libboost-python-dev cmake
cd至dlib-18.15/python_示例
然后:
然后,我将dlib.so
复制到dist包中,使其位于我的路径中
sudo cp dlib.so /usr/local/lib/python2.7/dist-packages/
根据文档
compile_dlib_python_module.bat
将在安装了CMake
和boost python
后在任何操作系统上都能工作 我终于成功了!稍后我会发布一篇关于这方面的详细博客文章,但这里是目前的要点。基本上,当我手动检查cmake的输出时,dlib是针对Python的系统版本而不是Python的自制版本进行编译和链接的
如果您对细节感兴趣,那么似乎cmake正在尝试编译并链接/usr/lib/libpython2.7.dylib
。但是,这是Python的系统版本。它应该编译一个针对/usr/local/ceral/python/2.7.8/Frameworks/python.framework/Versions/2.7/lib/libpython2.7.dylib的链接,这是python的自制版本
我手动编辑了CMakeFiles/dlib_u2;.dir/build.make
和/CMakeFiles/dlib_2;.dir/link.txt
以指向自制动态库文件,而不是系统动态库文件。我能够编译dlib,然后运行它而没有任何错误。而且,我能够毫无问题地运行对象检测器。您可以将-DPYTHON_库:FILEPATH=/path/to/your/libpython2.7.dylib
传递到cmake
/compile\u dlib\u python\u module.bat
所做的是
mkdir build
cd build
cmake ../../tools/python
因此,只需逐个运行命令,而不是
cmake ../../tools/python
跑
请注意,现在最简单的安装方法是使用:
sudo python setup.py install
对于Python 3支持,请使用:
python setup.py install --yes DPYTHON3
如果你用康达,那就容易多了
conda install -c menpo dlib
OSX(python3)的Dlib安装说明
安装默认dlib
pip3 install dlib
以下操作会提供一些加速
在启用AVX、SSE2、SSE4指令的情况下安装dlib(从dlib.net下载源代码并从目录中执行)
如果您已经使用cmake命令从github编译了源代码。
然后您需要运行python程序来调用dlib api
您应该编译dlib Python API,如下所示:
sudo python setup.py install
或
如果你有一个支持AVX指令的CPU,因为这会使一些东西运行得更快。注意,您需要安装BoostPython来编译python API。(链接自README.md)
这对我很有用。我在你身上遇到了同样的错误
当我查看文件夹“C:\Anaconda3\Lib\site packages”
,我发现“dlib-19.8.0-py3.4-win-amd64.egg\”
,这意味着我已经成功编译了dlib,但是“C:\Anaconda3\Lib\site packages”
下没有文件夹,它在“dlib-19.8.0-py3.4-win-amd64.egg\”文件夹中,因此,解决方案很简单:只需将“dlib\”
文件夹复制到路径“C:\Anaconda3\Lib\site packages”
,Python解释器就会找到模块并成功导入
希望这会有帮助
谢谢。随后,我找到了python_示例指令,brew安装了boost python,运行了compile_dlib_python_module.bat,启动了python并键入import dlib和python segfaulted(“分段错误:11”标识符:python版本:2.7.8(2.7.8)代码类型:X86-64(本机)父进程:bash[8652]负责人:Terminal[184]崩溃线程:0调度队列:com.apple.main Thread)有什么想法吗?谢谢-我做了与Mac相同的东西,除了Python导入dlib now Segfults之外,它还可以工作。接下来…快速谷歌一下,它似乎与boost Python有关,你能将完整的回溯添加到pastebin吗?这是回溯brew boost文件是boost-1.56.0.mavericks.Batch.1.tar.gz,我现在在osx 10.9.5上。如果你愿意,请提前感谢你能从系统python导入什么吗?我刚刚试过系统python,它也出现了一个稍微不同的错误。我猜这可能与OSX Mavericks与19版不兼容有关。这应该是可以接受的答案
conda install -c menpo dlib
brew uninstall boost-python
brew uninstall boost
brew install boost-python --with-python3 --without-python
pip3 install dlib
python setup.py install --yes USE_AVX_INSTRUCTIONS --yes USE_SSE2_INSTRUCTIONS --yes USE_SSE4_INSTRUCTIONS
sudo python setup.py install
sudo python setup.py install --yes USE_AVX_INSTRUCTIONS