在C中嵌入Python:导入本地模块时遇到问题

6 投票
2 回答
5301 浏览
提问于 2025-04-15 23:13

我需要在一个基于C语言的应用程序中运行Python脚本。我可以从Python库中导入标准模块,比如:

PyRun_SimpleString("import sys")

但是当我尝试导入一个本地模块can时,

PyRun_SimpleString("import can")

却出现了错误信息:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named can

当我在IPython中输入命令import can时,系统能够找到这个模块。

我该如何将我的应用程序与can模块连接起来呢?我已经尝试将PYTHONPATH设置为我的工作目录。

2 个回答

0

我发现这个方法更可靠,效果更好。

PyObject *sys = PyImport_ImportModule("sys");
PyObject *path = PyObject_GetAttrString(sys, "path");
PyList_Append(path, PyUnicode_FromString("."));
9

把Python库嵌入到你的程序里时,和在交互式解释器里不一样,它不会自动把''加到sys.path里。你可以使用PySys_SetPath()这个方法来手动添加正确的目录。

哦,嘿,看看我找到的东西

撰写回答