到目前为止,我只是试图在python文档中给出这个示例,以便在C中嵌入python模块.我的问题是我无法弄清楚放置python脚本的位置.我的最终目标是__init__.py通过执行可以在C中加载完整的python包(具有各种模块的文件夹)PyImport_Import(...).但是现在,请让我知道在哪里放置显示的脚本(文件名,路径等),以便运行给出的C程序.
编辑
我应该指出我尝试过的东西.我已经尝试将multiply.py文件放在本地目录中,并将其放在文件中调用的子目录multiply中__init__.py.在所有这些情况下,我得到了ImportError: No module named multiply
我认为它应该位于同一目录中,或者在sys.path按名称加载模块时,这应该可以工作:
./call multiply multiply 5 6\nRun Code Online (Sandbox Code Playgroud)\n\n更新:如果我显式地将当前目录添加到sys.path它的工作中:
Py_Initialize();\nPyRun_SimpleString("import sys");\nPyRun_SimpleString("sys.path.append(\\".\\")");\nRun Code Online (Sandbox Code Playgroud)\n\n这打印:
\n\n./call multiply multiply 5 6\n(\'Will compute\', 5, \'times\', 6)\nResult of call: 30\nRun Code Online (Sandbox Code Playgroud)\n\n更新:我已经问了一个相关的问题,看来如果你只是添加PySys_SetArgv它就可以了:
Py_Initialize();\nPySys_SetArgv(argc, argv);\nRun Code Online (Sandbox Code Playgroud)\n\n原因在这里提到:
\n\n\n\n\n否则(即,如果 argc 为 0 或 argv[0]\xe2\x80\x99t 不指向\n 现有文件名),则会在 sys.path 前面添加一个空字符串,这与在前面添加\n 相同当前工作目录(“.”)
\n
您也可以在那里查看答案:
\n\n为什么 PyImport_Import 无法从当前目录加载模块?
\n