2015-05-05 85 views
9

对不起,如果这是基本的,但我想安装dlib以便像Python(http://blog.dlib.net/2014/04/dlib-187-released-make-your-own-object.html)中提到的那样使用“在Python中制作自己的对象检测器!” 。如何使用dlib(使用cmake和osx)获取Python导入

我下载的安装文件,解压缩,并用cmake的作为安装的似乎正常工作指令(http://dlib.net/compile.html

cd examples 
mkdir build 
cd build 
cmake .. 
cmake --build . --config Release 

然而在Python中输入“进口DLIB”只是给导入错误:没有名为dlib的模块。

任何想法如何告诉Python如何找到/使用的东西?

回答

1

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

+0

谢谢。我随后发现了python_examples指令,brew安装了boost-python,运行了compile_dlib_python_module.bat,启动了Python并输入了导入dlib和Python segfaulted(“Segmentation fault:11”标识符:Python 版本:2.7.8(2.7.8) 代码类型:X86-64(母语) 父进程:bash [8652] 责任人:终端[184] 崩溃的线程:0调度队列:com.apple.main-thread)任何想法? –

4

在Ubuntu我不得不做以下几点:

sudo apt-get install libboost-python-dev cmake 

光盘dlib-18.15/python_examples

然后:

./compile_dlib_python_module.bat 

我然后复制dlib.so到dist-软件包,它会在我自己的路。

sudo cp dlib.so /usr/local/lib/python2.7/dist-packages/ 

根据文档compile_dlib_python_module.bat可以在任何操作系统上的工作,一旦你有两个CMake和安装boost-python

+0

谢谢 - 我做了Mac的等价物,它的工作除Python导入dlib现在segfaults。向前... –

+0

有一个快速的谷歌,它似乎与boost-python有关,你可以添加完整的追踪到pastebin? –

+0

这是追溯http://pastebin.com/wwcMVXML brew升级文件是boost-1.56.0.mavericks.bottle.1.tar.gz,我在osx 10.9.5上。预先感谢,如果你可以任何东西 –

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,然后在没有段错误的情况下运行它。此外,我能够毫无问题地运行物体探测器。

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 
8

刚一说明作为参考的是,现在最简单的安装方式是使用:

sudo python setup.py install 
+2

自19版以来,这应该是被接受的答案 – wordsforthewise

0

为Python 3支持使用:

python setup.py install --yes DPYTHON3 
3

为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 
0

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

你应该编译如下DLIB的Python API,

sudo python setup.py install 

或者

sudo python setup.py install --yes USE_AVX_INSTRUCTIONS 

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

它适用于我。

0

我对你说过同样的错误。

当我看着文件夹"C:\Anaconda3\Lib\site-packages",我发现"dlib-19.8.0-py3.4-win-amd64.egg\",这意味着我已经成功地编译DLIB,但下"C:\Anaconda3\Lib\site-packages"没有"dlib\"文件夹,它里面"dlib-19.8.0-py3.4-win-amd64.egg\"文件夹,因此该解决方案很简单:只需复制"dlib\"文件夹路径"C:\Anaconda3\Lib\site-packages",Python解释器将找到该模块并成功导入它。

希望它会帮助!

enter image description here