GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Python-Fehler AttributeError:'Modul'-Objekt hat kein Attribut 'sha1'

Das Problem trat auf, nachdem ein Braufass installiert wurde, das danach regelmäßig gereinigt wurde. Dann konnte node-gyp einige Pakete für meine Knotenanwendung nicht neu erstellen. Neuinstallation von Python 2 hat mir geholfen.

Auf macos:

brew reinstall [email protected]

Fehlerursache

Wenn Sie eine Datei im selben Verzeichnis haben von wo aus Sie das Skript ausgeführt haben (oder selbst wenn es das Skript selbst ausgeführt wird) so benannt wie ein eingebautes Modul , es wird anstelle des eingebauten Moduls geladen.

Korrektur

Um das Problem zu beheben, müssen Sie Ihre Datei einfach in hashlib.py umbenennen zu etwas anderem und dann lädt der Python-Interpreter das eingebaute Modul. Möglicherweise müssen Sie auch das kompilierte Modul hashlib.pyc löschen die sich im selben Verzeichnis wie Ihr hashlib.py befindet , andernfalls lädt Python dieses Modul immer noch.

Erklärung

Wenn Sie import ein Modul, sagen wir mal import hashlib , Python sucht nach dem Modul hashlib.py an den folgenden Orten und in der folgenden Reihenfolge:

  1. Verzeichnis, das das ausgeführte Skript enthält
  2. integrierte Module
  3. Verzeichnis, das das Eingabeskript enthält (oder das aktuelle Verzeichnis, wenn keine Datei angegeben ist)
  4. PYTHONPATH Umgebungsvariable (kann eine Liste von Verzeichnissen enthalten)
  5. installationsabhängiger Standardpfad

Das heißt, wenn Sie das Skript hashlib.py ausführen die die Anweisung import hashlib enthält , importiert Python das Skript selbst anstelle des eingebauten Moduls hashlib . Tatsächlich kompiliert Python Ihr Skript in die Datei hashlib.pyc im selben Verzeichnis und importiert dieses kompilierte Skript, wenn Sie also einfach hashlib.py umbenennen und verlassen Sie haslib.pyc Wo es ist, wird es immer noch geladen. Daher müssen Sie auch den haslib.pyc löschen .


Linux
  1. Python-Installationsfehler – Entschuldigung:UnicodeError:nicht unterstützte Escapezeichen können das Unicodedata-Modul nicht laden [Gelöst]

  2. ModuleNotFoundError:Kein Modul namens „IPython“ [Fix]

  3. Python.h kann nicht kompiliert werden – Websockify-Installationsfehler

  4. Importieren des Python-Moduls aus Bash

  5. Führen Sie das Python-Skript über crontab aus

So führen Sie ein Python-Skript in PHP aus

Perl-Fehler:PERL-XML-Parser-Modul erfordert expat-devel

Typeset -a Gibt Fehler im Skript an?

Importfehler kein Modul namens zlib (brew installiertes Python)

Beim Ausführen des Python-Skripts über systemd kann das Modul nicht geladen werden

Pip-Fehler:Das Objekt „Modul“ hat kein Attribut „Cryptography_HAS_SSL_ST“