2012-02-22 4 views
1

저는 matplotlib/pylab을 몇 년 동안 사용해 왔지만 정말 좋아했습니다. 이제도 단순한 import 문pylab 오류 : TypeError : 'NoneType'개체를 호출 할 수 없습니다.

import pylab as p

또는

import matplotlib

다음과 같은 오류를 생성합니다. (모두 python26과 python26-64, matplotlib 1.1.0)

내가 알고있는 유일한 변화는 내가 다른 스크립트에서 모듈 'gdspy'를 사용했다는 것이다. 이 일이 있기 바로 직전에 사진 마스크를 만든 사람들). 그 이후로 가장 간단한 예제에서 발생합니다. 내 IDE는 Eclipse Indigo입니다.

Traceback (most recent call last): 
    File "C:\pd\GDSII\test2.py", line 1, in <module> 
    import matplotlib 
    File "C:\Python26\lib\site-packages\matplotlib\__init__.py", line 104, in <module> 
    import os, re, shutil, subprocess, sys, warnings 
    File "C:\Python26\lib\subprocess.py", line 402, in <module> 
    import threading 
    File "C:\pd\GDSII\threading.py", line 1, in <module> 
    """Thread module emulating a subset of Java's threading model.""" 
    File "C:\Python26\lib\multiprocessing\__init__.py", line 64, in <module> 
    from multiprocessing.util import SUBDEBUG, SUBWARNING 
    File "C:\Python26\lib\multiprocessing\util.py", line 287, in <module> 
    class ForkAwareLocal(threading.local): 
AttributeError: 'module' object has no attribute 'local' 
Error in atexit._run_exitfuncs: 
Traceback (most recent call last): 
    File "C:\Python26\lib\atexit.py", line 24, in _run_exitfuncs 
    func(*targs, **kargs) 
    File "C:\Python26\lib\multiprocessing\util.py", line 258, in _exit_function 
    info('process shutting down') 
TypeError: 'NoneType' object is not callable 
Error in sys.exitfunc: 
Traceback (most recent call last): 
    File "C:\Python26\lib\atexit.py", line 24, in _run_exitfuncs 
    func(*targs, **kargs) 
    File "C:\Python26\lib\multiprocessing\util.py", line 258, in _exit_function 
    info('process shutting down') 
TypeError: 'NoneType' object is not callable 

답변

3

여기서 실제 오류는 첫 번째 추적에 표시되는 것으로, 끝 부분은 'module' object has no attribute 'local'입니다. 파이썬이 라인 import threading을 만나면 C:\Python26\lib\threading.py 대신에 C:\pd\GDSII\threading.py이라는 스크립트를 선택하는 것으로 보인다.

귀하의 스택 트레이스는 파이썬의 subprocess 모듈이 import threading을한다는 것을 나에게 제안하고, 따라서 파이썬은 아마도이 찾을 것으로 예상하고 올바른 threading module 대신이 다른 스크립트를 따기입니다. 나중에 멀티 프로세싱 모듈 중 하나가 threading 모듈에서 찾을 것으로 예상되는 클래스를 참조하려고하지만 거기에없는 경우 문제가 발생합니다.

나는 무엇이 C:\pd\GDSII\threading.py인지 확실히 알지 못합니다. Thread module emulating a subset of Java's threading model 텍스트는 내 컴퓨터의 C:\Python26\lib\threading.py 행 1에 나타나는 텍스트와 같습니다. 이 잘못된 스크립트는 local 클래스가없는 Python의 자체 스레딩 모듈의 이전 버전일까요? 위치를 감안할 때 최근에 사용하기 시작한 gdspy 모듈의 일부라고 생각합니다. 이 스크립트의 이름을 다른 것으로 변경하고 (동일한 폴더에있는 threading.pyc을 삭제) 파일이 도움이됩니까?

+0

예. 내 경로에는 'threading.pyc'가 있습니다. 그것은 gdspy에 의해 생성되었을 수도 있습니다. 저자에게 알려 드리겠습니다. – roadrunner66

+0

'threading.pyc'의 이름을 바꾸면 바로 문제가 해결되었습니다. – roadrunner66

+1

한동안 이것을보고 난 후에 나는 당신이 이것을 어떻게 계산했는지 알 수 있습니다. 그래서 내 문제를 해결하는 것이 아니라,이 추적을 올바르게 읽는 법을 가르쳐 주셔서 감사합니다. – roadrunner66

관련 문제