2011-11-22 61 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沒有。