当我运行 C 代码调用 python 函数时, Py_Initialize() 出现错误 错误是 ImportError: No module named site. 我试图把 Py_SetProgramName(argv[0]) 但它不起作用。cmd调用是cInterfacePython Test.py multiply 3 2 (exe是cInterfacePython)
2 回答
我不得不对 PATH env-var 和 PYTHONPATH 进行一些处理,以使嵌入时更好地工作。
Py_SetProgramName 并不重要,它主要用于内部参考等......
因此,我建议您找到本地安装 python 的位置(这在 Windows 机器上的注册表中可用)并用于setenv
将 PATH 和 PYTHONPATH 设置为适当的值。那将是 PATH 的 python.exe 目录(如您在上面的评论中),以及使用您自己的 python 代码和您从嵌入 exe 运行的相关库将 PYTHONPATH 设置为该目录。
然后运行 Py_Initialize 看看是否发生了正确的事情。如果需要在初始化后修改 PYTHONPATH,请使用 PySys_SetPath() 修改 sys.path。
我遇到了同样的问题(Windows,使用 Visual Studio 和 MinGW/g++),我通过将 site.py 的路径添加到 PYTHONPATH 来解决它。出于某种原因,即使没有它,启动 python.exe 也是可能的,并且 sys.path 确实包含该路径(即使 PYTHONPATH 没有),我可以“导入站点”,但 Py_Initialize 无法做与 python 相同的事情.exe 做到了。