c++ - 安装 dlib 时出错

标签 c++ python-3.x c++11 cmake dlib

我关注了this tutorial安装 dlib 但是当我运行 pip install dlib我明白了

Collecting dlib

Using cached dlib-19.4.0.tar.gz Building wheels for collected packages: dlib

Running setup.py bdist_wheel for dlib ... error

Complete output from command /home/leo/.virtualenvs/py3_dlib_tutorial/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-4luevi_i/dlib/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/tmpv2rhc6cbpip-wheel- --python-tag cp36:

running bdist_wheel

running build

Detected Python architecture: 64bit

Detected platform: linux

Configuring cmake ...

/usr/bin/cmake: /home/leo/anaconda3/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake)

/usr/bin/cmake: /home/leo/anaconda3/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/bin/cmake)

/usr/bin/cmake: /home/leo/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/bin/cmake)

/usr/bin/cmake: /home/leo/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/bin/cmake)

/usr/bin/cmake: /home/leo/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1)

error: cmake configuration failed!

有什么解决办法的建议吗?

更新

我使用的是 ubuntu 16.04

我还注意到,当我运行 sudo pip install dlib 时它有效但是 然后我得到

 (py3_dlib_tutorial) ~$ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 12:22:00) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dlib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dlib'

更新

似乎是在此之前的修复导致了错误

我在我的 .bashrc 中禁用了这一行

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/leo/anaconda3/lib

这是制作 mkvirtualenv 所必需的工作。 现在pip install dlib工作了,但我仍然遇到类似的错误

python
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dlib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/leo/anaconda3/lib/python3.6/site-packages/dlib/__init__.py", line 1, in <module>
    from .dlib import *
ImportError: /home/leo/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.58.0)

最佳答案

要解决此错误:

python
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux 
Type "help", "copyright", "credits" or "license" for more information.
>>> import dlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/leo/anaconda3/lib/python3.6/site-packages/dlib/__init__.py", line 1, in <module>
from .dlib import *
ImportError: /home/leo/anaconda3/bin/../lib/libstdc++.so.6: version     `GLIBCXX_3.4.21' not found (required by /usr/lib/x86_64-linux-
gnu/libboost_python-py35.so.1.58.0)

您需要从 Python 3.6 迁移到 Python 3.5。 如果您使用的是anaconda,可以通过设置新环境来完成:

conda create -env_name python=3.5 anaconda
activate env_name
conda install -c menpo dlib 

这应该可以工作,并且您的 dlib 可以正常工作。

关于c++ - 安装 dlib 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43783052/

相关文章:

c++11 - C++ 的长列表对性能的影响

c++ - strlen() 的奇怪行为,在代码中的不同位置使用时给出不同的输出

c++ - C++ 的检测(诊断)库

c++ - 对 "fun2()"的 undefined reference

c++ - 使用原始内存地址查找指针/类

python - 有效地检查两个数是否互质(相对质数)?

python - 如何在 python 中根据索引和长度做无限字符串?

Python 异或错误

C++11 与 R 和 Rcpp : supported by CRAN policies?

c++ - 覆盖为默认说明符...为什么不呢?