从嵌入式 Python 中的路径导入 Python 模块

问题描述

我在 C++ 中使用嵌入式 Python。我可以像这样导入一个模块,因为 my_module.py一个文件

PyObject* pName PyUnicode_DecodeFSDefault("my_module");
PyObject* pModule = PyImport_Import(pName);

这在大多数情况下运行良好,只是我无法控制将包含模块的文件放在哪里;它必须与可执行文件位于同一目录中。这是我的用例的问题。我希望能够使用文件的任何路径并从那里导入模块。不过,我似乎可以找到一种方法来做到这一点。

解决方法

假设您已经在某个时候调用了 Py_Initialize,您应该能够:

PyObject* sysPath = PySys_GetObject((char*)"path");
PyList_Append(sysPath,(PyUnicode_FromString(pathToModuleDirectory)));

其中 pathToModuleDirectory 是一个字符串,其中包含您希望能够导入的模块所在目录的路径。现在您应该能够按照问题中描述的方式导入模块。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...