ubuntu - 无法从嵌入式 boost python 导入一些内置模块

标签 ubuntu boost-python python-3.9 python-embedding

我正在使用 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/

相关文章:

Ubuntu 16.04 安装 ElasticSearch 5.x,启动失败

python - mysqlfailover : No module named mysql. utilities.common.tools

amazon-web-services - 无法在 AWS EC2 实例 Ubuntu 上从亚马逊存储库安装软件包

c++ - Python 嵌入 C++

c++ - 从包装器中提取到 vector map

python - 在 Boost Python 中使用带有 std::wstring 的 C++ 函数的 Unicode

java - 每当我运行 "apt-get install php5-gd php-mysql"时,它都会在 Ubuntu 14.04 上显示 "Unable to locate package php-mysql"

python - 基于 Python 3.9 的软件无法在 Windows 7 上运行

python - 如何在Windows中将ghostscript DLL库提供给python?

django - 如何在 ubuntu aws 上使用 python3.9 安装 django