5

到目前为止,我只是想在 python 文档中给出这个例子,以便在 C 中嵌入一个 python 模块来工作。我的问题是我不知道在哪里放置 python 脚本。我的最终目标是__init__.py通过执行PyImport_Import(...). 但现在,请让我知道将显示的脚本(文件名、路径等)放在哪里,以便运行给定的 C 程序。

编辑

我应该指出我尝试过的。我尝试将multiply.py文件放在本地目录中,以及将其放在文件中调用的子目录multiply__init__.py。在所有这些情况下,我得到ImportError: No module named multiply

4

1 回答 1

3

我认为它应该在同一个目录中,或者在sys.path它按名称加载模块时,这应该有效:

./call multiply multiply 5 6

更新:如果我明确地将当前目录添加到sys.path它的工作原理:

Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");

这打印:

./call multiply multiply 5 6
('Will compute', 5, 'times', 6)
Result of call: 30

更新:我问了一个相关的问题,似乎如果你只是添加PySys_SetArgv它就可以了:

Py_Initialize();
PySys_SetArgv(argc, argv);

原因在这里提到:

否则(即,如果 argc 为 0 或 argv[0] 不指向现有文件名),则在 sys.path 前添加一个空字符串,这与在当前工作目录前添加 (".") 相同

这也是您可以在那里检查答案的问题:

为什么 PyImport_Import 无法从当前目录加载模块?

于 2012-11-16T18:21:24.817 回答