我正在使用Centos 7.2 64位。 python的默认版本是2.7.5。我安装了一个2.7.13的anaconda版本。当我将anaconda的bin
路径添加到PATH
变量时,python的默认解释器设置为2.7.13。但是,当我安装opencv
时,我在执行cmake
时收到了此警告消息:
Could NOT find PythonLibs: Found unsuitable version "2.7.5", but required is exact version "2.7.13" (found /lib64/libpython2.7.so)
似乎python库的默认路径是/lib64/libpython2.7.so
。我搜索了解决方案,它说如果我设置环境变量PYTHON_LIBRARY
,这将解决。所以我把它添加如下:
export PYTHON_LIBRARY=/ghome/mypath/anaconda2/lib/libpython2.7.so
我重新登录。问题仍然存在。
我的cmake
命令如下:
cmake -D BUILD_opencv_gpu=OFF -D WITH_CUDA=OFF -D WITH_1394=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/ghome/mypath/software/try_opencv/installed ..
我几个小时都陷入了这个问题。 谢谢大家的帮助!!!
答案 0 :(得分:2)
来自documentation的CMake模块FindPythonLibs
:
如果您要指定要使用的Python安装,则应修改以下缓存变量:
因为版本是从patchlevel.h
头文件中提取的(这是Find
CMake模块的常见做法),您需要指定库和包含目录< /强>:
cmake -DPYTHON_LIBRARY=/ghome/mypath/anaconda2/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR=<...> <other-cmake-arguments>
答案 1 :(得分:1)
除了以下内容之外,您还可以在运行时使用PYTHONPATH环境变量添加此路径:
import sys
sys.path.append('/home/user/python-libs')
您还没有提到操作系统,如果是Linux,那么您可以尝试搜索sys.path中列出的目录。
import sys
print '\n'.join(sys.path)
因此,Python会找到已安装到这些位置的任何软件包。 sys.path使用当前工作目录填充,后跟PYTHONPATH环境变量中列出的目录,然后是依赖于安装的默认路径,这些路径由站点模块控制。 假设未设置PYTHONPATH环境变量,sys.path将包含当前工作目录以及站点模块对其进行的任何操作。
答案 2 :(得分:-1)
我想我已经解决了这个问题。我将以下句子添加到我的.bashrc
文件中并且有效。
export PYTHON_LIBRARY=/ghome/mypath/anaconda2/lib/libpython2.7.so
export PYTHON_INCLUDE_DIR=/ghome/mypath/anaconda2/include:/ghome/mypath/anaconda2/include/python2.7