python - python的cmake execute_process抛出“权限被拒绝”错误
问题描述
我正在尝试使用 cmake 在 macOS 上构建一个 C++ 项目。该项目有点复杂,但在大多数情况下,它似乎正在编译,直到它得到一个名为FindPythonLibsNew.cmake
. 该呼叫 execute_process
在以下呼叫中返回“权限被拒绝”
(要查看整个 FindPythonLibsNew.cmake,请访问此链接。它与我们项目中的完全相同的文件
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
"from distutils import sysconfig as s;import sys;import struct;
print('.'.join(str(v) for v in sys.version_info));
print(sys.prefix);
print(s.get_python_inc(plat_specific=True));
print(s.get_python_lib(plat_specific=True));
print(s.get_config_var('SO'));
print(hasattr(sys, 'gettotalrefcount')+0);
print(struct.calcsize('@P'));
print(s.get_config_var('LDVERSION') or s.get_config_var('VERSION'));
print(s.get_config_var('LIBDIR') or '');
print(s.get_config_var('MULTIARCH') or '');
"
RESULT_VARIABLE _PYTHON_SUCCESS
OUTPUT_VARIABLE _PYTHON_VALUES
ERROR_VARIABLE _PYTHON_ERROR_VALUE)
以下是输出
-- Found PythonInterp: /usr/local/Cellar/python/3.7.4 (Required is at least version "3")
CMake Error at /Users/Developer/Development/cppProject/cmake/FindPythonLibsNew.cmake:96 (message):
Python config failure:
Call Stack (most recent call first):
/usr/local/share/cmake/pybind11/pybind11Tools.cmake:16 (find_package)
/usr/local/share/cmake/pybind11/pybind11Config.cmake:100 (include)
/Users/Developer/Development/cppProject/python_test/CMakeLists.txt:8 (find_package)
${PYTHON_EXECUTABLE}
路径设置为/usr/local/Cellar/python/3.7.4
如果我尝试print
通过 python3 运行语句,它们会按预期执行,所以问题必须在于 cmake 如何尝试执行 python 命令。不幸的是,我不知道足够多的 cmake 来完全理解它是如何或从哪里执行的。
任何帮助是极大的赞赏。
解决方案
事实证明,这FindPythonLibsNew.cmake
是为PYTHON_EXECUTABLE
. 我通过添加-DPYTHON_EXECUTABLE:FILEPATH=/usr/local/Cellar/python/3.7.4/bin/python3
到 cmake 命令纠正了这个问题。我确信有更好、更清洁的方法来解决这个问题,但目前这对我有用。
推荐阅读
- c - 没有完整路径的 gcc:尝试执行“cc1”时出错:execvp:没有这样的文件或目录
- python - 无缘无故多次调用 send_from_directory 函数
- docker - 如何让我的 dockerized Python 应用程序在 2 个单独的端口上输出?
- c - 如果我使用 QtCreator 构建,从共享对象到主应用程序的调用会中断
- swift - 使用 @dynamic 快速替代这个 Obj-C 模式?
- x509certificate2 - X509Certificate2.import 在当前文件夹下找不到文件
- ios - 有没有办法在swift 4中迭代双变量的小数部分?
- android - 是否可以在 javadocs 中链接 README 文件?
- vba - For Each Statement 遍历一堆文本框值
- android - Kotlin:在运行时找不到具有泛型的内联函数的参数