10

あなたの助けが必要です、

エラーの修正方法 AttributeError: 'module' object has no attribute 'sha1',

コマンド example import random または import hashlib を開始すると、このような結果が得られます

root@thinkad:~# python
Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/random.py", line 49, in <module>
    import hashlib as _hashlib
  File "hashlib.py", line 3, in <module>
    hasher = hashlib.sha1()
AttributeError: 'module' object has no attribute 'sha1'
>>> import math
>>> import hashlib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "hashlib.py", line 3, in <module>
    hasher = hashlib.sha1()
AttributeError: 'module' object has no attribute 'sha1'
>>> 
4

4 に答える 4

2

エラーの原因

スクリプトを実行した場所と同じディレクトリにファイルがある場合(またはスクリプト自体が実行されている場合でも) 、組み込みモジュールと同じ名前のファイルがある場合、組み込みモジュールの代わりに読み込まれます。

修理

これを修正するには、ファイルの名前を別の名前に変更するだけでhashlib.py、Python インタープリターが組み込みモジュールをロードします。hashlib.pycと同じディレクトリにあるコンパイル済みモジュールを削除する必要がある場合もありますhashlib.py。そうしないと、Python が引き続きそのモジュールをロードします。

説明

importモジュールを作成するとimport hashlib、Python は次の場所と次の順序でhashlib.pyモジュールを検索します。

  1. 実行中のスクリプトを含むディレクトリ
  2. 組み込みモジュール
  3. 入力スクリプトを含むディレクトリ (ファイルが指定されていない場合は現在のディレクトリ)
  4. PYTHONPATH環境変数 (ディレクトリのリストを含む場合があります)
  5. インストールに依存するデフォルト パス

つまりhashlib.py、ステートメントを含むスクリプトを実行するとimport hashlib、Python は組み込みモジュールの代わりにスクリプト自体をインポートしますhashlib。実際、Python はスクリプトをhashlib.pyc同じディレクトリ内のファイルにコンパイルし、そのコンパイル済みスクリプトをインポートするため、名前を変更してその場所hashlib.pyをそのままhaslib.pycにしておくと、引き続きスクリプトが読み込まれます。したがって、 も削除する必要がありますhaslib.pyc

于 2016-05-27T12:58:17.950 に答える
0

新しいpythonバージョンも取り込んだパッケージの更新後、アナコンダ環境で同じエラーが発生しました。私の場合、 a の後に固定されconda remove pythonた this が続きます。conda install python=2.7

于 2015-01-23T19:12:34.397 に答える
0

インタープリターが標準モジュールhashlib.pyを見つけるのを邪魔するというファイルがあるようです。hashlib

于 2014-03-02T20:50:07.893 に答える