我有一個包含以下命令bat.bat文件失敗:「setup.py構建」
Python中,使用os.system當腳本不相同的文件夾
我有使用執行該蝙蝠命令的腳本:
os.system('E:/bla/FPtest/retryURL/Temp_installed/bat.bat'
如果我從與bat.bat相同的文件夾運行腳本......它完美地工作。
如果我在任何其他文件夾中運行它,會返回以下錯誤。
**'setup.py'** is not recognized as an internal or external command, operable program or batch file.
我也曾嘗試subprocess.Popen
返回相同的結果但它包括這個頂部:C:\Eclipse\Workspace\example>setup.py build
... ... MMMMMM
UPDATE:
我已經決定在保存bat.bat文件的同一目錄中運行 os.system命令(這也是setup.py的存儲目錄)
現在呼叫應該如此簡單。
import os
os.system('bat.bat') note: (run from pydev)
結果:
E:\App\FPtest\retryURL\Temp_installed>setup.py build
Traceback (most recent call last):
File "C:\Python31\lib\site.py", line 56, in <module>
import os
File "C:\Python31\lib\os.py", line 380, in <module>
from _abcoll import MutableMapping # Can't use collections (bootstrap)
File "C:\Python31\lib\_abcoll.py", line 49
class Hashable(metaclass=ABCMeta):
^
SyntaxError: invalid syntax
附加說明:
如果我運行任何 '簡單' 的bat文件,一切工作正常。如果我在解釋器之外運行.bat文件,它也可以正常工作......這導致我相信它是引起問題的.bat文件的內容:setup.py build
。
在這種情況下.bat文件的內容執行一個命令cx_freeze冷凍和exe文件,但上面的錯誤是返回什麼,當我嘗試這個
UPDATE:
似乎運行「OS .system('bat.bat')或等效的子進程如果從標準python解釋器運行,則成功執行.bat文件。所以它只是不成功,如果從Pydev運行
'setup.py'在哪裏?你需要a)在你的'bat.bat'中放置'setup.py'的完整路徑,或者b)將包含'setup.py'的文件夾添加到你的PATH變量中(在Linux中:export PATH = $ PATH: /路徑/到/文件夾/含有/ setuppy')。 – 2011-12-25 07:47:25
這似乎是一場真正的災難雞尾酒。我試圖從pydev運行一個bat文件。它正常工作。但我想讓bat文件執行一個cx_freeze來凍結另一個程序。我已經做了一個工作,並繼續通過上述錯誤,但已掛上另一個我將在上面添加 – Rhys 2011-12-25 08:58:32
我有一個與Mac OS X上Pydev非常類似的問題 - 一個exernal命令在Python解釋器中運行良好終端,但不在Pydev。我非常有興趣瞭解發生了什麼問題以及如何解決問題。 – acjay 2012-01-09 15:43:54