2008-11-12 27 views
1

我的記錄表應用程序有一個菜單選項用於創建一個新的空白記錄表。當我打開工作表窗口時,可以使用subprocess.Popen()來打開新窗口而不出現問題。然而,在Windows下(我還沒有在其他操作系統上測試過它),如果我打開一個新窗口,然後使用「打開文件」對話框填充文件中的數據字段,我不再能夠創建新的窗口。一旦它的人口中,Windows給我只有當窗口填充時,爲什麼會發生「command not recognized」錯誤?

「foo.py」不被識別爲一個內部或外部命令,可操作的 程序或批處理文件。

我不明白什麼會導致Windows突然無法識別Popen()調用。我沒有任何能夠以我意識到的方式影響它的代碼。

回答

4

從錯誤消息看來,您需要將「foo.py」的完整路徑傳遞給您的Popen調用。通常只有「foo.py」會搜索當前的工作目錄,但是我發現這在Windows上可能有點不可預測。你的打開文件對話框似乎在跳動。

其次,爲了更好的衡量,看起來您需要將foo.py作爲參數傳遞給python.exe可執行文件,而不是執行foo.py本身。再次,我會通過路徑指定這個。

所以是安全的,是這樣的:

subprocess.Popen([r'C:\Python2.5\python.exe', r'C:\path\to\foo.py']) 
+0

此外,您的PATH環境變量可能沒有在子進程中適當地設置。 – 2008-11-12 11:27:45

0

建議的答案似乎已經解決了這一問題。我也意識到我需要使用os.name來確定正在使用哪個操作系統,然後我可以使用正確的路徑格式來加載外部Python文件。

相關問題