我正在使用 boost::python
在我的 C++ 应用程序中运行 python 脚本.我收到错误:ModuleNotFoundError: No module named 'math'
.一些内置模块可以工作,但有些不能。例如,import sys
作品。
我验证了我有一个正常的 python 安装,并且当我从命令行运行 python 时,所有模块都正确导入。
我打印了 sys.path
, sys.executable
, sys.version
, sys.builtin_module_names
在嵌入式版本和命令行版本中,只有一个区别 - 从我的 C++ 可执行文件内部运行时,内置模块列表更短,缺少一些模块。
我错过了什么?
最佳答案
仅供引用,我遇到了完全相同的问题。
我在 RHEL 7 上运行并且正在构建一个共享库,它是复杂系统的一部分。在以下 4 个调用中,只有日历失败(返回 null):
PyObject* t1 = PyImport_ImportModule("calendar");
PyObject* t2 = PyImport_ImportModule("itertools");
PyObject* t3 = PyImport_ImportModule("appdirs");
PyObject* t4 = PyImport_ImportModule("cython");
在尝试了一大堆不同的模块/包之后,它似乎适用于 sys 和 itertools 等内置包,并且它适用于站点包中的模块(即站点包中的简单 .py 文件),但当你有一个完整的包...一个带有 的目录初始化 .py 文件如果您将对 PyImport_ImportModule 的调用放在 try/catch block 中:
关于ubuntu - 无法从嵌入式 boost python 导入一些内置模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67131177/