【发布时间】:2020-05-28 07:28:51
【问题描述】:
我正在尝试从另一个打开 python 脚本而不阻止使用 Popen。启动脚本打开驱动脚本,并且(使用 tkinter 按钮)驱动脚本可以打开一个辅助脚本。当我尝试在驱动程序脚本中调用 Popen 时,什么也没有发生 - 外壳非常短暂地打开然后关闭。但是,当我运行驱动程序脚本而不首先调用启动器(如__main__)时,侧脚本打开正常。
我已经发布了下面的代码,我是否遗漏了有关嵌套 Popen 调用的内容?对于可执行文件,我尝试过sys.executable、python.exe 和pythonw.exe。没有工作。线程可能可以作为 Popen 的替代方案,但侧面脚本也使用 tkinter,所以我必须找到一种使 tkinter 线程安全的方法。
starter.py:
pid = subprocess.Popen(["pythonw.exe", "driver.py"])
driver.py:
pid = subprocess.Popen([sys.executable, "side_script.py"]
【问题讨论】:
-
“什么都不做”并不是一个真正有用的描述。检查
pid对象(除此之外:可能不是一个好名字,因为“pid”是一个具有特定含义的术语)以获取进程的状态。它退出了吗?如果是这样,退出状态是什么?它还在运行,只是没有弹出窗口吗? -
另外,如果这不能用两个微不足道/近乎空的脚本来重现,这意味着答案需要实际显示问题确实发生的脚本为该问题提供 aa minimal reproducible example - 对于任何人都能够测试他们的答案至关重要。
-
感谢您的建议!解决了查看错误代码的问题。更新了原始答案以显示。
-
很高兴听到你解决了它!使用“添加答案”按钮添加您自己的答案(稍后您将被允许接受),而不是在问题中编辑答案。
标签: python tkinter subprocess popen