[英]Running command with python subprocess.call fails but works correctly when typed into cmd.exe
因此,背景是我正在嘗試設置一個Cocos-2dx v3.0項目。 我已經獲得了創建要運行的項目的python腳本,現在我正在嘗試構建和運行該項目,以便可以開始在游戲上進行開發。 按照這個問題,我遇到的問題是每次運行build and run python腳本時,subprocess.call發出的命令之一都會失敗。 但是,當我自己在shell中運行傳遞給它的確切命令時,它運行完美。
python中調用subprocess.call的方法:
@staticmethod
def run_cmd(command, verbose):
if verbose:
Logging.debug("running: '%s'\n" % ''.join(command))
else:
log_path = CCPlugin._log_path()
command += ' >"%s" 2>&1' % log_path
print "CALLING run_cmd"
ret = subprocess.call(command, shell=True)
if ret != 0:
message = "Error running command, return code: %s" % str(ret)
if not verbose:
message += ". Check the log file at %s" % log_path
raise CCPluginError(message)
該腳本在腳本中多次使用,並且每隔一次成功。
從python調用時失敗的命令,但直接輸入到cmd時運行良好:
"C:\Users\Patrick\Downloads\apache-ant-1.9.4-bin\apache-ant-1.9.4\bin\ant" clean debug -f C:\HyperFusion\RuneWars\RuneWars\proj.android\build.xml -Dsdk.dir="C:\Users\Patrick\COPAP\Software\adt-bundle-windows-x86-20130522\sdk"
任何和所有幫助將不勝感激。 我做了很多谷歌搜索,但是沒有發現任何可能會有所幫助的東西。 我是python的新手(由於這些只是Cocos提供的安裝腳本,因此我真的沒想到不必調試它),如果我在這里缺少一些簡單的東西,我深表歉意。
如果與該問題有關,則操作系統為Windows 7。
謝謝!
我被問及“冗長”標志的原因是有原因的。 如果將其設置為“ False”,請嘗試注釋掉一行,如下所示:
else:
log_path = CCPlugin._log_path()
# command += ' >"%s" 2>&1' % log_path
可能發生的情況是下一個命令將無法打開日志文件進行寫入,因為上一個命令已經打開了該文件,這可能很好地解釋了為什么其他每個命令在您編寫時都會成功。
只是一個應該易於檢查的假設。 祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.