2016-09-19 5 views
2

numbers.pynumpyBasicOps.pyという2つのPythonファイルがあります。 numbers.pyは単純なPythonファイルであり、モジュールをインポートすることはありません。 numpyBasicOps.pynumpyライブラリをインポートします。私はnumpyBasicOps.pyを実行するたびに.pycファイルはインポートされなくても作成されます

numbers.pyの出力が表示されている最初のnumpyモジュールに関連するいくつかのエラーが続く:また

Traceback (most recent call last): 
    File "./numpyBasicOps.py", line 3, in <module> 
    import numpy as np 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/__init__.py", line 142, in <module> 
    from . import add_newdocs 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/add_newdocs.py", line 13, in <module> 
    from numpy.lib import add_newdoc 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/lib/__init__.py", line 8, in <module> 
    from .type_check import * 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/lib/type_check.py", line 11, in <module> 
    import numpy.core.numeric as _nx 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/__init__.py", line 22, in <module> 
    from . import _internal # for freeze programs 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/_internal.py", line 15, in <module> 
    from .numerictypes import object_ 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/numerictypes.py", line 962, in <module> 
    _register_types() 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/numerictypes.py", line 958, in _register_types 
    numbers.Integral.register(integer) 
AttributeError: 'module' object has no attribute 'Integral' 

、私は、生成されたnumbers.pyため.pycファイルを参照してください。

numpyBasicOps.pyにインポートされていないにもかかわらずnumbers.pycファイルが生成され、numbers.pyの出力が表示されるのはなぜですか?

答えて

2

numpyは、抽象基本クラスnumbers.Integralの実装時に独自の整数型オブジェクトを登録します。これを行うには、そのオブジェクトにアクセスするにはimport numbersを使用する必要があります。

少なくとも、試行して失敗しました。あなたのモジュールの名前をnumbersと同じようにに変更しました。つまり、お客様のnumbers.pyモジュールは組み込みのstandard library module numbersをマスクしました。

モジュールの名前を変更し、作成したnumbers.pycファイルを削除してください。

+0

ありがとう@Martijn Pieters。それは今私のために働いた。しかし、私は疑いがあります:私が現在持っているnumpyは新しくインストールされています。以前は、numpyは既にPythonに存在していました。別にインストールする必要はありませんでした。しかし、Tensorflowをインストールするには、このnumpyバージョンで問題が発生していたため、削除する必要がありました。テンソルフローにnumpy互換の別のバージョンをインストールしました。だから、私の疑問は、以前のバージョンのnumpyではnumpyエラーを出さずに正しく動作するために 'numpyBasicOps.py'ファイルが使用されていたことです。それで、なぜ以前に働いていたのですか? – AnujaP

+0

@AnujaP:それは進んでいくほどの情報ではありませんが、古いバージョンの 'numpy'が' numbers'をインポートしなかったように思えるでしょう。 –

関連する問題