我正在使用Kivy开发GUI应用程序,反过来它将使用subprocess.Popen
从Python脚本调用外部控制台程序并实时捕获其stderr
输出。最后,它的工作原理(感谢SO!)。我使用Pyinstaller打包应用程序,在其中生成一个* .app,其中包含Contents\MacOS
中的可执行文件。如果我直接从终端内运行此可执行文件,它运行良好。 stderr输出可以实时捕获。但是,如果我尝试使用终端中的open
命令直接运行* .app或双击Finder中的* .app图标,则对subprocess.Popen
的调用将暂停。
我不确定这一点,但OSX应用程序是否有关于如何执行外部程序的限制?
答案 0 :(得分:1)
应用程序停止的原因原因不是subprocess.Popen
调用,而是mktemp
的调用,它在*.app folder
内部创建了一个临时文件,其中Mac应用程序肯定是不允许默认写入。评论完之后,代码运行得很好。我会记下这一点,并提醒自己不要再次在*.app
文件夹中创建临时文件!