在OS X 10.8上使用Python打开窗口时出现烦人的消息

35
每当我在OS X 10.8上运行打开任何类型的窗口的Python脚本,无论是GLUT窗口还是QT窗口或其他任何类型的窗口,我都会收到以下类似消息:
2013-09-11 14:36:53.321 Python[3027:f07] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to /var/folders/0x/25_70mj17tb1ypm1c_js8jd40000gq/T/org.python.python.savedState

我使用通过MacPorts安装的Python2.7。
这只是一个小问题,但我很想知道这个消息的含义,以及是否有什么方法可以防止它。这是由于我的系统配置不正确,还是每个人都会遇到这个问题?

似乎只有Mac用户会遇到这个问题,而且它可能发生在各种程序中 - 问题出在给定进程的重启时恢复标志的设置上。 - Steve Barnes
@SteveBarnes 感谢您提供的信息。 “重启时恢复”标志是我可以更改的吗,以防止此消息出现在Python脚本中? - N. Virgo
可能性 - 我不是Mac专家,但似乎有几个人遇到了这个问题。 - Steve Barnes
1
看起来输入终端命令 defaults write org.python.python ApplePersistenceIgnoreState NO 可以消除警告。如果没有任何问题,我会使用它一段时间,并将其作为回答发布。 (如果您在意声望的话,也可以给您发布。)非常感谢您给我提供帮助,帮助我解决了这个问题。 - N. Virgo
(本问题的访问者可能需要注意,得票最高的答案是在我自己的回答之后发布的,而我的回答也表达了同样的意思。) - N. Virgo
4个回答

54

正确的命令是:

defaults write org.python.python ApplePersistenceIgnoreState NO

这条信息出现是由于较新版本的OS X中的"应用恢复"功能。显然,对于大多数Python程序(例如我的情况,使用matplotlib绘制数据),这不是一个有用的功能,因此我们可以使用上面的命令将其关闭。

有关defaults write实际执行的操作的更多信息,请查看手册页面


谢谢!我在尝试导入cocos库(cocos2d)时遇到了这个错误,希望能对其他人有所帮助。 - user391339
这对我有用,不确定为什么它首先出现了,之前没有显示。 - Raveen Beemsingh
2
在2020年,运行Python3时,我需要使用org.python.python3才能使其正常工作。 - Greg C

30

在感谢 @Steve Barnes 给我提示的同时,我回答了自己的问题。似乎这个问题可以通过终端命令解决。

$ defaults write org.python.python ApplePersistenceIgnoreState NO

在评论中,Greg Coladonato报告称,在2020年运行Python 3时,可能需要将其更改为

$ defaults write org.python.python3 ApplePersistenceIgnoreState NO

我不确定这个命令的具体操作方式,但之前我执行过一次并没有观察到任何副作用。

不过,另一位用户指出,在Mountain Lion上使用Python 3.4可能会导致一个bug,即当按下按钮时,tkinter对话框不会像预期那样关闭。

$ defaults write org.python.python ApplePersistenceIgnoreState YES

如果您遇到问题,执行此命令将撤消操作。(如有必要,请使用org.python.python3替换org.python.python。)


非常感谢,你让我的一天变得美好了!我在Yosemite和El Capitan上(py2和py3都试过)遇到了tkinter的问题已经有很长时间了,现在通过你指出的第一个命令(使用NO)完全解决了。 - Aziz Alto
1
在我的 Python3.7 上(来源已经被遗忘),前者有效而后者无效。 - Devon

5
在运行anaconda Python发行版时,需要稍微不同的写法: defaults write com.continuum.python ApplePersistenceIgnoreState NO
该代码用于保持Anaconda Python在Mac OS X上的窗口状态。

1

我正在使用pyenv和虚拟环境运行wxpython 4.1.1,与此同时,我正在运行Python 3.9.x版本。选项:

defaults write org.python.python3 ApplePersistenceIgnoreState NO

对我没有起作用。但是,

defaults write org.python.python ApplePersistenceIgnoreState NO

起到了作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接