python - Cmake:找不到 Python 2.7

标签 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、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_program命令来获取正确的二进制文件?

最佳答案

哎呀。我只需要清除 Cmake 缓存。

在尝试调试一些 Python 问题时,我删除并重新安装了 python2 .当我创建构建文件夹时,python2没有安装。所以要修复,我只是删除了构建文件夹并重新创建了它。

关于python - Cmake:找不到 Python 2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57918862/

相关文章:

python - 将字典附加到列表

自定义类的 Pythonic 方式

git pull突然挂了

php - 命令行命令在Python中不起作用-不发送文件

python - jmespath:区分未找到的键和具有空值的键

python - 在 Python 2.7 中创建任意大小数组的最简单方法

linux - 在 C++ 链接期间,在 Ubuntu 12.04 中找不到库

php - 将 Laravel 项目迁移到新实例后 POST 和 GET 错误。原因是什么?

java - 为什么 Python 异常被命名为 "Error"?

python - 属性错误: module 'inspect' has no attribute 'getsource' using Textmate