pylab错误:TypeError:'NoneType'对象不可调用

时间:2012-02-22 22:09:38

标签: python matplotlib

我使用了matplotlib / pylab几年并且喜欢它。现在甚至仅仅是导入声明

  

将pylab导入为p

  

导入matplotlib

生成以下错误。 (在python26和python26-64中,matplotlib 1.1.0)

我唯一知道的变化是,在此之前,我使用(在不同的脚本中)模块'gdspy'(一个非常好的gds文件为制作照片蒙版的人生成实用程序)。从那以后,它发生在最简单的例子中。我的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

1 个答案:

答案 0 :(得分:3)

我认为这里的真正错误是在第一个回溯中指出的,以'module' object has no attribute 'local'结尾。在我看来,当Python遇到一行import threading时,它会选择一个脚本C:\pd\GDSII\threading.py而不是正确的C:\Python26\lib\threading.py

你的堆栈跟踪告诉我Python的subprocess模块执行import threading,因此Python可能会选择其他脚本而不是它期望找到的正确threading module。稍后,当其中一个多处理模块尝试引用它希望在threading模块中找到但在那里不存在的类时,它会遇到麻烦。

我不确定C:\pd\GDSII\threading.py中的内容。文本Thread module emulating a subset of Java's threading model与我的计算机上C:\Python26\lib\threading.py的第1行上显示的内容相同。也许这个错误的脚本是Python自己的线程模块的旧版本,其中没有local类?考虑到它的位置,我猜它是你最近开始使用的这个gdspy模块的一部分。是否将此脚本重命名为其他内容(并删除同一文件夹中的任何threading.pyc)文件帮助?