2017-03-02 106 views
0

在windows命令提示符下運行python時出現此語法錯誤。命令提示符下運行python的語法錯誤

syntaxError

即使我什麼都不鍵入並只需點擊進入它仍然有語法錯誤。我唯一能做的就是Ctrl + Z退出。 (exit()does not work)

命令提示符從bat腳本啓動,該腳本首先設置一堆env vars然後啓動cmd。這個bat文件是通過子進程或os.system從python gui調用的(兩者都有問題)。

bat文件,成立於以下方式:

集PYTHONPATH = \一些\路徑

...其它更多的環境變量設置(這是本 「定製」 的CMD

目的

啓動/ d 「一些/位置」, 「CMD」

如果我直接雙擊它運行良好的bat文件。

運行echo%PYTHONPATH%表示在推出的這兩種情況下都正確的路徑(同爲其他ENV瓦爾)

我想從一個Python GUI啓動它爲了方便與設置的所有環境的路徑。

任何想法是怎麼回事?

+0

你有沒有做任何與怪異字符編碼或終端的行爲? – user2357112

+0

不是我所知道的。 啓動過程爲1行: subprocess.Popen( '路徑\到\ bat.bat',殼=真) 蝙蝠是作爲說明above.THe路徑是集合是: PYTHONPATH = myCustomPaths PATH =%PATH% ; gitPathForCallingAGit.exe 這就是它的環境。沒有碰過別的東西。 – Mafster

+1

你用什麼命令啓動Python?這種行爲看起來像您使用了'-u'命令行選項,它與Windows上的標準REPL不兼容。它把'stdin'設置爲二進制模式。因此,來自控制檯輸入的CRLF不會被轉換爲REPL需要的Unix風格LF行尾。 – eryksun

回答

2

「解決」它,但不完全解釋它對我來說。 @eryksun指出我正確的方向,謝謝!

刪除var PYTHONUNBUFFERED爲我做了。

set PYTHONUNBUFFERED= 

有點得到它,但不是完全...希望消除它不會導致更多的問題! :P這實際上只是一個測試環境,所以實際產品不會以這種方式運行。

Python Interactive Interpreter always returns "Invalid syntax" on Windows

+0

設置該環境變量與傳遞'-u'命令行選項相同。您可以*暫時*啓用二進制模式來防止損壞管道到'stdin'的二進制流,但將其設置爲永久中斷Windows上的REPL。 – eryksun

+0

沒錯,在這種情況下,它在會話中是暫時的。到目前爲止還沒有遇到任何打嗝。我想知道的是-u是如何通過的。我沒有設置它.. – Mafster

+0

你的意思是如何設置'PYTHONUNBUFFERED'環境變量?打開一個新的命令提示符並檢查'set PYTHON'以查看以「PYTHON」開頭的所有環境變量的列表。如果已設置,則使用系統環境變量編輯器將其刪除。 – eryksun