初始化时嵌入python错误

初始化时嵌入python错误,python,c,python-c-api,python-c-extension,python-embedding,Python,C,Python C Api,Python C Extension,Python Embedding,当我运行C代码调用python函数时,Py_Initialize()上出现错误。错误为ImportError:没有名为site的模块。我试着把Py_SetProgramName(argv[0])放进去,但不起作用。cmd调用是cInterfacePython Test.py multiply 3 2(exe是cInterfacePython)我不得不对PATH env var和PYTHONPATH进行一些修改,以便在嵌入时更好地工作 Py_SetProgramName并不重要,它主要用于内部参考

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

我不得不对PATH env var和PYTHONPATH进行一些修改,以便在嵌入时更好地工作

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

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


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

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

听起来你的python安装有点混乱。你能告诉我们更多吗?我自己没有在机器上安装python。。。所以我不知道细节…@user1023894:我已经删除了我的帖子,因为它不能回答你的问题。你能测试python.exe是否在与你自己的“cinterfacepython”相同的环境中工作吗?如果你无法访问这台机器,那么我们就无能为力了。如果
Py\u Initialize()
,那么我只需将问题反馈给管理机器的人即可。@Macke:我只需将整个项目移动到python.exe目录即可。但是您知道如何在不移动整个项目的情况下设置环境变量和路径吗?就像在c代码中一样?你用的是PySide?那么将应用程序的路径设置为app_path将把环境路径设置为python26文件?或者PyRun_SimpleString cmd导入正确的文件?但是我在Py_初始化时崩溃了……我必须设置PYTHONHOME env var(到python.exe的位置),而不是PYTHONPATH