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

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

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

MacOS の場合:

brew reinstall example@unixlinux.online

エラーの原因

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

修正

それを修正するには、ファイルの名前を 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」がありません