2011-11-22 63 views
2

当我运行C代码调用python函数时,Py_Initialize()出现错误错误是ImportError:没有名为site的模块。我试图把Py_SetProgramName(argv [0]),但它不起作用。 CMD调用是cInterfacePython Test.py乘3 2(EXE是cInterfacePython)在初始化时嵌入python错误

+0

听起来像你的python安装有点搞砸了。你能告诉我们更多这方面的情况吗? –

+0

我没有在机器上自己安装python ...所以我不知道有关的详细信息... – PeterG

+0

@ user1023894:我删除了我的帖子,因为它不会回答你的问题。你能测试python.exe是否与你自己的'cinterfacepython'在同一个环境中工作吗? – Macke

回答

3

我不得不使用PATH env-var以及PYTHONPATH来使嵌入时的工作更好。

Py_SetProgramName并不重要,它主要是供内部参考等等

所以,我建议你找哪里Python是本地安装(这是在Windows机器上的注册表提供),并使用setenv设置PATH和PYTHONPATH到适当的东西。这将是PATH的python.exe目录(如上面的注释中所述),并将PYTHONPATH设置为具有您自己的python代码和您从嵌入式exe运行的相关库的dir。

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

+0

你正在使用PySide?所以将应用程序的路径设置为app_path会将环境路径设置为python26文件?或PyRun_SimpleString cmd导入正确的文件?但即时通讯崩溃在Py_initialize .... – PeterG

+0

我必须设置PYTHONHOME env-var(到python.exe的位置)而不是PYTHONPATH –

1

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