在初始化时嵌入python错误

时间:2011-11-22 19:38:27

标签: python c python-c-api python-c-extension python-embedding

当我运行C代码来调用python函数时,Py_Initialize()上出现错误错误是ImportError:没有名为site的模块。我试过把Py_SetProgramName(argv [0])但它不起作用。 cmd调用是cInterfacePython Test.py乘以3 2(exe是cInterfacePython)

2 个答案:

答案 0 :(得分:3)

我不得不使用PATH env-var以及PYTHONPATH进行处理,以便在嵌入时更好地工作。

Py_SetProgramName并不重要,它主要用于内部参考等...

所以,我建议你找到本地安装python的地方(这在Windows机器上的注册表中可用)并使用setenv将PATH和PYTHONPATH设置为适当的值。这将是PATH的python.exe目录(如上面的注释中所示),以及使用您自己的python代码和从嵌入exe运行的相关库将dY设置为目录。

然后运行Py_Initialize并查看是否正确的事情发生。如果您需要在初始化后修改PYTHONPATH,请使用PySys_SetPath()修改sys.path。

答案 1 :(得分:1)

我遇到了同样的问题(Windows,包括Visual Studio和MinGW / g ++),我通过向PYTHONPATH添加site.py的路径解决了这个问题。 出于某种原因,即使没有它也可以启动python.exe,并且sys.path确实包含该路径(即使PYTHONPATH没有),我可以“导入网站”,但Py_Initialize无法做到与python相同的事情.exe做了。