【发布时间】:2020-11-01 13:34:23
【问题描述】:
我正在使用 cmake 的 find_package 来定位 Python3,如下所示:
find_package(Python3 REQUIRED COMPONENTS Interpreter)
这适用于我的本地系统,但在我们的 CI 上,它在某些运行时失败(一次是 Linux,一次是带有 MXE 的 Linux)它会出错
Could NOT find Python3 (missing: Python3_EXECUTABLE Interpreter)
Reason given by package:
Interpreter: Cannot use the interpreter "/opt/pyenv/shims/python3.8"
如果我直接使用python3 来调用我的脚本,它可以在相同的系统上工作。因此,我可以肯定地说他们确实有一个可以工作的 Python 环境。
我想知道find_package 执行了什么样的检查导致它相信解释器没有工作。最重要的是:如何禁用这些检查?
注意:我不能简单地依赖 Python 在 PATH 中,因为这个假设在我们的 Windows CI 中被打破,find_package 方法可以正常工作。
注意 2:我使用的是最新的 cmake 版本(来自 Kitware 的 PPA)
【问题讨论】:
-
@34563578345 不幸的是我还没有找到解决这个问题的方法。
-
@34563578345 你有什么东西要注释掉?你碰巧有一个可公开访问的差异链接或类似的东西吗?
-
所以你根本没有执行任何 find_package 魔法?这对我来说并不适用于所有平台。例如在 Windows 上,这会破坏 iirc
-
好吧,如果你不使用
find_package,我假设你依赖python解释器在PATH中,在我的情况下,我们的Windows CI似乎不是这种情况。