GNU/Linux >> Linux の 問題 >  >> Linux

PythonエラーAttributeError:「モジュール」オブジェクトには属性「sha1」がありません

問題は、後で定期的なクリーンアップを行った醸造キャスクをインストールした後に発生しました。次に、node-gyp がノード アプリケーションの一部のパッケージを再構築できませんでした。 python 2 を再インストールすると役に立ちました。

MacOS の場合:

brew reinstall [email protected]

エラーの原因

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

修正

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

説明

import したとき モジュール、たとえば import hashlib としましょう 、Python はモジュール hashlib.py を探します 次の場所に、次の順序で:

<オール>
  • 実行中のスクリプトを含むディレクトリ
  • 組み込みモジュール
  • 入力スクリプトを含むディレクトリ (ファイルが指定されていない場合は現在のディレクトリ)
  • PYTHONPATH 環境変数 (ディレクトリのリストを含む場合があります)
  • インストールに依存するデフォルト パス
  • つまり、スクリプト hashlib.py を実行すると ステートメント import hashlib を含む 、Python は組み込みモジュール hashlib の代わりにスクリプト自体をインポートします .実際、Python はスクリプトをファイル hashlib.pyc にコンパイルします。 同じディレクトリにあり、そのコンパイルされたスクリプトをインポートするため、 hashlib.py の名前を変更するだけで haslib.pyc のままにします それがどこにあるか、それはまだそれをロードしています。したがって、 haslib.pyc も削除する必要があります .


    Linux
    1. Pythonインストールエラー–申し訳ありません:UnicodeError:サポートされていないエスケープはunicodedataモジュールをロードできません[解決済み]

    2. ModuleNotFoundError:「IPython」という名前のモジュールがありません[修正]

    3. Python.hをコンパイルできません–Websockifyのインストールエラー

    1. crontab 経由で Python スクリプトを実行する

    2. 混合シェルと python スクリプトは可能ですか?

    3. 不足している python bz2 モジュール

    1. Bash スクリプトでエラーを発生させる

    2. systemd 経由で Python スクリプトを実行すると、モジュールのロードに失敗する

    3. Pip エラー:「モジュール」オブジェクトには属性「Cryptography_HAS_SSL_ST」がありません