在C中嵌入Python:导入本地模块出现问题

6

我需要在基于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个回答

9

对不起,我是Python的新手。你说的“”是什么意思? - Drew
空字符串。这意味着 sys.path 中的当前路径。 - Ignacio Vazquez-Abrams
我已经让它工作了...虽然我不确定如何做到的,并且正在尝试在另一台机器上复制结果。我尝试使用sys.path.append以及手动连接表示sys.path和我的所需路径的字符串。似乎我不能同时拥有系统路径和我的路径。感谢您的帮助。 - Drew
明白了...在~/.bashrc文件中使用PYTHONPATH=<工作目录>。 - Drew

0

我发现这种方法更加稳健可靠,

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

我发现这种方法很有用。请注意,它缺少Py_DECREF调用,因此会泄漏引用。它还缺少错误检查,但这些调用可能总是成功的。 - Bowie Owens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接