Python osx下打开的子进程
我的程序中有一行代码,用于启动程序的其他实例:Python osx下打开的子进程,python,macos,subprocess,Python,Macos,Subprocess,我的程序中有一行代码,用于启动程序的其他实例: a=subprocess.Popen(__file__) 在linux下,它可以正常工作 但是在osx下,它不会创建一个新窗口(该程序是一个Tkinter程序),但它不会给出任何错误。 (我检查了\u file\u实际上是正在运行的程序的正确名称,它是可执行的) 报税表如下: > pprint (vars(a)) {'_child_created': True, 'pid': 38865, 'returncode': None,
a=subprocess.Popen(__file__)
在linux下,它可以正常工作
但是在osx下,它不会创建一个新窗口(该程序是一个Tkinter程序),但它不会给出任何错误。
(我检查了\u file\u实际上是正在运行的程序的正确名称,它是可执行的)
报税表如下:
> pprint (vars(a))
{'_child_created': True,
'pid': 38865,
'returncode': None,
'stderr': None,
'stdin': None,
'stdout': None,
'universal_newlines': False}
有什么提示吗?你遇到了一个令人尴尬的问题。你知道吗?您的窗口只是隐藏在前面创建的另一个窗口后面 要查看此情况,请将最新创建的窗口显示在第一个窗口的前面,如中所示:
import Tkinter
import subprocess
if __name__ == "__main__":
try:
open('bluh_check')
except IOError:
open('bluh_check', 'w').close()
x = subprocess.Popen(['python', __file__])
print vars(x)
title = 'there'
else:
title = 'hi'
root = Tkinter.Tk()
root.title(title)
root.withdraw()
root.deiconify()
root.mainloop()
从相同的python可执行文件开始,并传递相同的命令行参数:
p=Popen([sys.executable]+sys.argv)
。更令人尴尬的是:如果没有参数调用我的程序,它会自动退出,而我只是向它提供了_文件。我发现最好的解决方案是将它简单地称为a=subprocess.Popen(sys.argv):第0个列表值是程序名,其余的都是它的命令行参数