我有2个版本的安装蟒蛇,但CMake的是使用旧版本。 如何强制cmake的使用更新的版本?(I

2019-07-21 05:29发布

我有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.2python2.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版本无论是。



文章来源: I have 2 versions of python installed, but cmake is using older version. How do I force cmake to use the newer version?