python(matplotlib)\uu nsautoreleasenool错误。。。只是在漏水

2024-06-16 11:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

[我最初是在serverfault中发布的,但有人建议我在这里发布它。]

Matplotlib是一个用于数据可视化的python库。当我试图在屏幕上显示图形时,我收到以下错误/警告:

2012-12-21 16:40:05.532 python[9705:903] *** __NSAutoreleaseNoPool(): Object 0x103e25d80 of class NSCFArray autoreleased with no pool in place - just leaking
2012-12-21 16:40:05.534 python[9705:903] *** __NSAutoreleaseNoPool(): Object 0x103e26820 of class __NSFastEnumerationEnumerator autoreleased with no pool in place - just leaking
2012-12-21 16:40:05.535 python[9705:903] *** __NSAutoreleaseNoPool(): Object 0x103e9f080 of class NSObject autoreleased with no pool in place - just leaking

FWIW,生成这些结果的一种方法如下所示;所示的所有步骤(包括调用ipython)都来自matplotlib教程:

^{pr2}$

另外,FWIW,我观察到python+numpy+matplotlib+ipython的多种安装方式(在同一台机器上)完全相同的行为,包括使用系统提供的python的安装,使用homebrew安装的python的安装,或者那些使用python直接从源代码安装到主目录以外的位置的程序。在

你知道会发生什么吗?或者我能做些什么吗?在


Tags: ofnoinobjectmatplotlibwithipythonplace
2条回答

它试图对Cocoa做些什么,但是Cocoa还没有真正初始化。您可以先运行以下命令,使错误静音并解决问题:

from Foundation import NSAutoreleasePool
pool = NSAutoreleasePool()

在这之后:

^{pr2}$

这需要PyObjC。不幸的是,这可能只允许每个IPython会话显示一个绘图。您可能希望尝试IPython笔记本,它消除了对Cocoa的依赖。在

我也遇到了同样的问题,我找到的一个解决方案是添加以下行:

plt.ion()

在第一个打印命令之前。这将打开交互式打印模式,错误消息将消失。这只对我在命令行绘图时有效,如果我在脚本中执行ion()然后show(),则绘图根本不会显示出来,如果我不使用ion(),我可以看到我的绘图,但会收到错误消息。这只是在更新到1.2.0版之后才发生的。在

相关问题 更多 >