2011-12-04 43 views
3

我試圖從蹬子其關閉(運行從一個Python程序Python腳本的原因是主要的程序必須已經退出腳本運行時,通過與WX的組合.CallAfter和Close)。在腳本運行然而,當我得到ImportError: No module named os第1行的錯誤,讓我覺得這件事情做的PYTHONPATH,但我可以運行該腳本從終端就好了。子運行蟒越來越導入錯誤

爲什麼不能腳本看到任何核心模塊這種方式下運行?

編輯: 有問題的行是:

wx.CallAfter(subprocess.Popen,'python %s "%s" %s %s'%(os.path.join(BASE_DIR,"updatecopy.py"),BASE_DIR,pos[0],pos[1]),shell=True) 

BASE_DIR只是腳本生活的目錄中

+0

只是運行subprocess.Popen(...)的工作還是它有同樣的問題? –

+0

'os'是大多數python版本的內置模塊。它不能被導入的事實可能表明解釋者正在關閉。你能告訴我們一個完整的腳本示例來演示行爲嗎? – SingleNegationElimination

回答

1

子是存在的,因爲os.exec *已被棄用,所以我不會使用到位POPEN作爲有人建議建議。

我從凍結的進程中運行,當看到這個問題出現。如果是這樣的話,那麼你最有可能繼承了新的Python程序一個奇怪的環境。

大多數凍結腳本將試圖從一個zip文件,在這種情況下,它也難怪,Python不能找到任何運行,這一切都被困在一個zip文件:

如果是這種情況,然後嘗試使用您用來運行凍結腳本的python可執行文件運行。它應該能夠處理特殊的環境。

0

也許你可以使用os.execv代替POPEN。

os/python docs

這些功能都執行新的程序,替換當前過程;他們不回來。在Unix上,新的可執行文件被加載到當前進程,並且將具有相同的進程ID調用者。錯誤將被報告爲OSError異常。

強調礦)