【问题标题】:batch execution is blocked when launched using subprocess.run使用 subprocess.run 启动时批处理执行被阻止
【发布时间】:2020-11-30 16:47:29
【问题描述】:

我有以下批次用于启动 eclipse/tasking 为我的 C 项目生成 makefile:

test_eclipsec.bat

echo off

set my_eclipse=C:\Program Files\TASKING\TriCore v6.3r1\ctc\eclipse
set my_workspace=C:\Users\firsname.name\Desktop\Repositories\PF_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 行。但它也会卡住。

我不知道如何解决这个问题。 任何帮助将不胜感激。

【问题讨论】:

    标签: python eclipse batch-file subprocess


    【解决方案1】:

    subprocess.run 是一个阻塞调用。它等待您的命令完成,然后返回一个CompletedProcess 实例。您确定您等待构建命令的时间足够长吗?

    【讨论】:

    • 是的,我已经等得够久了。当我从 Windows 资源管理器或命令提示符启动批处理脚本时,只需几秒钟即可完成。
    【解决方案2】:

    我发现了问题。这是我的 IDE(Pycharm)的控制台,它没有处理子进程(仍然不知道为什么)。我在 Pycharm 中更改了一些设置(在输出控制台中模拟终端),现在效果很好。

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      相关资源
      最近更新 更多