Cmake:找不到Python 2.7

Cmake:找不到Python 2.7,python,python-2.7,ubuntu,cmake,ubuntu-18.04,Python,Python 2.7,Ubuntu,Cmake,Ubuntu 18.04,我有一个需要Python 2.7的库。因此,我的Cmake看起来像: set(Python_ADDITIONAL_VERSIONS 2.7) find_package(PythonInterp 2.7 EXACT) 这在以下情况下失败: Could NOT find PythonInterp: Found unsuitable version "3.6.8", but required is exact version "2.7" (found /usr/bin/python3) 在我的系统

我有一个需要Python 2.7的库。因此,我的Cmake看起来像:

set(Python_ADDITIONAL_VERSIONS 2.7)
find_package(PythonInterp 2.7 EXACT)
这在以下情况下失败:

Could NOT find PythonInterp: Found unsuitable version "3.6.8", but required is exact version "2.7" (found /usr/bin/python3)
在我的系统上,我安装了一些Python版本2.7、3.6和其他版本:

$ which python 
/usr/bin/python

$ which python2
/usr/bin/python2

$ which python2.7
/usr/bin/python2.7

$ which python3
/usr/bin/python3

$ which python3.6
/usr/bin/python3.6
我在.bashrc设置或类似的设置中没有任何别名。。。如果在命令提示符下输入python、python2或python2.7,将获得python2.7解释器

在尝试调试此问题时,我查看了FindPythonInterp.cmake文件,以查看逻辑失败的地方,问题似乎在于这一行:

find_program(PYTHON_EXECUTABLE NAMES ${_Python_NAMES})
具体来说,如果编辑该cmake文件

find_program(PYTHON_EXECUTABLE NAMES ${_Python_NAMES})
message(STATUS "find_program(PYTHON_EXECUTABLE NAMES ${_Python_NAMES})")
message(STATUS "found ${PYTHON_EXECUTABLE}")
然后重新加载我的项目,我看到了输出

-- find_program(PYTHON_EXECUTABLE NAMES python2.7;python2)
-- found /usr/bin/python3
这对我来说毫无意义。。。似乎我正在请求Cmake查找python2,但它正在返回python3,尽管我请求的东西有精确的匹配项


谁能解释一下这个。。。如何修改或替换find_程序命令以获得正确的二进制文件?

Oops。我只需要清除Cmake缓存


在调试一些Python问题时,我删除并重新安装了python2。创建构建文件夹时,未安装python2。所以为了解决这个问题,我只是删除了build文件夹并重新创建了它

对于其他人:在调用cmake时明确设置PYTHON_可执行文件也有助于确保使用正确的版本。例如,如果一些库调用在没有指定版本的情况下查找_packagePythonInterp,我会很有用,但我想避免这样做,因为我们团队中的多个成员在不同的系统(mac、ubuntu、windows)上工作时应该可以使用该项目,而这是不可移植的。