簡體   English   中英

使用python subprocess.call運行命令失敗,但在鍵入cmd.exe時可以正常運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM