我有2个版本的安装蟒蛇,但CMake的是使用旧版本。 如何强制cmake的使用更新的版本?
Answer 1:
您可以尝试以下任一取决于你所需要的:
find_package( PythonInterp 2.7 REQUIRED )
find_package( PythonLibs 2.7 REQUIRED )
请参阅: CMake的文档
Answer 2:
我有一个类似的问题,并利用它解决了保罗的回答作为提示。 我需要使用python2.7
编译旧库,但cmake
不断拿起我的python3.2
库(和可执行文件)。
首先,我跑cmake
默认选项,然后编辑CMakeCache.txt
它生成的文件。 我就是这么做的,主要是因为我不知道正确的-D...
咒语造成cmake
获得Python库,包括路径等权摆在首位。
在我CmakeCache.txt
,我发现这样的行
路径程序
PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python
一个目录路径
PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.2
路径库
PYTHON_LIBRARY:FILEPATH=/usr/lib/libpython3.2.so
和更换的每次出现python3.2
与python2.7
。 我也不得不重新命名PYTHON_EXECUTABLE
使用python2.7
,因为python
是一个符号链接python3.2
我的系统上。
然后我重新cmake
。 因为它喜欢它的缓存值,实际上是寻找库,这应该适用于所有情况。 至少,它没有在我的。
Answer 3:
尝试添加-DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7
这可能是一个路径问题?
还可以指定路径到您的Python库,用你想要的版本:
cmake -DPYTHON_LIBRARIES=/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib .
Answer 4:
我使用Anaconda(蟒蛇2.7.8),以及蟒蛇2.7.6。
我试图-DPYTHON_EXECUTABLE:FILEPATH=$ANACONDA_HOME/bin
,却发现1.4版本(怪异:)。
我的解决办法是将其更改为PYTHON_EXECUTABLE:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TIFF=ON \
-DPYTHON_LIBRARY=$ANACONDA_HOME/lib/libpython2.7.so \
-DPYTHON_INCLUDE_DIR=$ANACONDA_HOME/include/python2.7/ \
-DPYTHON_EXECUTABLE=$ANACONDA_HOME/bin/python
Answer 5:
我用例是在C ++类是通过提供给Python脚本一个相当大的项目Boost.Python
。 在已经打过的CMake的Python解释器和库检测的各种怪癖,我终于放弃了,并推出我自己的。 我的做法是基于的后小幅编辑的版本python-config
脚本, 有时 (但并不总是!)投入到新创建的虚拟环境( 请参阅本SO张贴在pyvenv
这些问题,但我离题)。 这个脚本是由一个小片段的CMake调用pyconfig.cmake
。 两者都是免费提供从GitHub库的cmake-蟒蛇-配置 。
警告:脚本假设你有你的一个Python 3级口译PATH
。 Python 2中的检测没有尝试。 该脚本不尝试查找所有已安装的 Python3版本无论是。