使用subprocess.run启动时会阻止批处理执行



我有以下批处理,用于启动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(输出控制台中的模拟终端(中更改了一些设置,现在它工作得很好。

最新更新