我正在使用boost::python从我的C++应用程序中运行python脚本。我得到的错误是:ModuleNotFoundError: No module named 'math'。有些内置模块可以工作,但有些不能。例如,import sys可以工作。
当我从命令行运行python时,我验证了我有一个正常的python安装,并且所有模块都被正确导入。
我打印了嵌入式版本和命令行版本的sys.path、sys.executable、sys.version和sys.builtin_module_names,只有一个区别--从我的C++可执行文件内部运行时,内置模块列表更短,缺少一些模块。
我遗漏了什么?
发布于 2021-08-23 15:04:31
仅供参考,我遇到了完全相同的问题。
我在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块中:
https://stackoverflow.com/questions/67131177
复制相似问题