2012-02-22 28 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'で終わる1に示されていると思います。 Pythonが行import threadingに遭遇したとき、それはC:\Python26\lib\threading.pyの代わりにC:\pd\GDSII\threading.pyというスクリプトを取り上げているように見えます。

あなたのスタックトレースは、Pythonのsubprocessモジュールはimport threadingを行うことを私に示唆、ひいてはPythonは、おそらくそれを見つけることを期待正しいthreading moduleするのではなく、この他のスクリプトを拾っています。後でマルチプロセッシングモジュールの1つが、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

関連する問題