我有以下批处理,用于启动eclipse/tasking为我的C项目生成makefile:
test_eclipsec.bat
echo off
set my_eclipse=C:Program FilesTASKINGTriCore v6.3r1ctceclipse
set my_workspace=C:Usersfirsname.nameDesktopRepositoriesPF_SW
set my_project=xxx
set my_project_config=Release
echo Generating Makefiles
"%my_eclipse%eclipsec.exe" -nosplash -application com.tasking.managedbuilder.headlessbuild -data %my_workspace% -generateMakefile %my_project%/%my_project_config%
echo Generating Makefiles end
就其本身而言,这个脚本运行良好。
但是我希望这个批处理脚本是从我的Python脚本中启动的。因此,在我的Python脚本中,我调用以下函数:
def generate_makefile(self):
batch_path = Path("msw/support/build/test_eclipsec.bat")
subprocess.run(batch_path)
python脚本打印以下行:
生成Makefiles
这是我的批处理脚本中的回声。但随后Python脚本被阻止。它不做任何其他事情(它应该做(,并且我必须手动停止Python脚本的执行。它似乎被eclipse的执行卡住了。
我还尝试使用subprocess.run((直接从python运行eclipse cmd行。但它也被卡住了。
我不知道如何解决这个问题。如有任何帮助,我们将不胜感激。
subprocess.run
是一个阻塞调用。它等待您的命令完成,然后返回一个CompletedProcess
实例。您确定等待构建命令的时间足够长吗?
我发现了这个问题。这是我的IDE(Pycharm(的控制台,它没有处理子流程(仍然不知道为什么(。我在Pycharm(输出控制台中的模拟终端(中更改了一些设置,现在它工作得很好。