2012-12-22 3 views
2

유출 [I 원래 저기 serverfault이 게시, 대신 여기에 게시 할 수 있습니다 조언했다.]파이썬 (하기 matplotlib) __NSAutoreleaseNoPool 오류 ... - 단지

하기 matplotlib 데이터 시각화를위한 파이썬 라이브러리입니다. 내가 화면에 그래프를 표시 할 때, 나는 다음과 같은 오류/경고를 얻을 :

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 튜토리얼에서 가져옵니다 :

% ipython 
... 
In [1]: import matplotlib.pyplot as plt 

In [2]: plt.plot([1, 3, 2, 4]) 
Out[3]: [<matplotlib.lines.Line2D at 0x106aabd90>] 

In [3]: plt.show() 

또한, FWIW, 내가 (같은 기계에) 설치의 여러 스타일로 에게 정확히 같은 행동을 관찰 한 파이썬 + numpy + matplotlib + ipython (시스템 제공 파이썬을 사용하는 설치, homebrew이 설치 한 파이썬을 사용하는 설치 또는 소스에서 직접 내 홈 디렉토리의 위치에 설치된 python을 사용하는 설치 포함).

어떤 일이 벌어지고 있는지 또는 내가 그것에 대해 할 수있는 일에 대한 아이디어가 있습니까?

+0

matplotlib의 버그처럼 보입니다. –

+2

pyplot, numpy 및 다른 유용한 패키지를 자동으로 가져 오는'ipython -pylab'로 ipython을 시작해보십시오. 또한 'ipython'을 시작할 때 스레딩 옵션을 추가하여 게임 해보십시오. http://ipython.org/ipython-doc/stable/interactive/reference.html#eventloop-integration – tacaswell

+0

사용중인 osx 버전을 추가 할 수 있습니까? – tacaswell

답변

1

코코아로 뭔가를하려하지만 코코아가 실제로 초기화되지 않았거나 아무것도 아닙니다. 당신은 전에이 작업을 실행하여 오류를 침묵하고 문제를 해결할 수 있습니다 :

from Foundation import NSAutoreleasePool 
pool = NSAutoreleasePool() 

그리고이 후 :

from AppKit import NSApplication 
NSApplication.sharedApplication().run() 

이것은 PyObjC이 필요합니다. 불행하게도 이것은 IPython 세션 당 하나의 플롯을 표시하는 것을 허용 할 수 있습니다. 대신 IPython 노트북을 사용해보십시오. 그러면 코코아에 대한 의존성이 제거됩니다. 첫 번째 플로팅 명령 앞에

plt.ion() 

: 저도 같은 문제가 있습니다

4

은, 내가 찾은 하나 개의 솔루션 라인을 추가하는 것입니다. 그러면 대화식 플로팅 모드가 켜지고 오류 메시지가 사라집니다. 이것은 커맨드 라인에 플로팅 할 때만 효과가 있습니다. 스크립트에서 이온()과 쇼()를하면 플롯이 전혀 나타나지 않고 이온()을 빠져 나왔을 때 볼 수 있습니다. 내 플롯,하지만 오류 메시지가 나타납니다. 이것은 1.2.0 버전으로 업데이트 된 이후에만 발생했습니다.