因此,我的背景是我尝试设置Cocos-2dx v3.0项目。我已经获得了创建项目的python脚本,现在我正在尝试构建和运行项目,以便我可以开始开发游戏。我遇到的问题是,每次运行构建和运行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,如果这与问题有关。
谢谢!
答案 0 :(得分:0)
有一个原因让我问过'详细'标志。如果设置为'False',请尝试注释掉一行,如下所示:
else:
log_path = CCPlugin._log_path()
# command += ' >"%s" 2>&1' % log_path
可能会发生的情况是,下一个命令将无法打开日志文件进行写入,因为它已经被上一个命令打开了。这可能是一个很好的解释,为什么每个其他命令都会在您编写时成功。
只是一个易于检查的假设。祝你好运!