Flake8 Attribut Fehler: 'module' Objekt hat kein Attribut 'normalize_paths'

8

Hier ist meine Ausgabe von flake8 während der Validierung:

%Vor%

Warum kann ich es nicht benutzen?

    
PanchoVarallo 31.05.2016, 11:48
quelle

1 Antwort

0

Dieses Problem kann behoben werden, indem eine aktuelle Version von flake8 verwendet wird, insbesondere flake8 >= 2.6.0 , die nicht mehr auf das Modul pep8 angewiesen ist ( Quelle ). Sie können dies tun, indem Sie es über pip installieren:

%Vor%

sollte die neueste Version (3.5.0 im Moment) installieren.

Was ist falsch gelaufen?

Dieser Fehler sagt Ihnen, dass flake8 ein Modul mit dem Namen pep8 findet, aber dieses Modul enthält keine Funktion namens normalize_paths . Es kann mehrere Gründe dafür geben, darunter eine kaputte Installation (die repariert werden sollte, wenn flake und pep8 neu installiert werden) und widersprüchliche Versionen von pep8 in Ihrem Pfad. Letzteres kann passieren, wenn Sie Ihre sys.path bearbeiten und / oder irgendwie verwalten um ein eigenes Modul namens pep8 in deinen Pfad zu bekommen. Dies kann so wenig wie ein Ordner namens pep8 mit einem __init__.py sein, wie in diesem Beispiel:

%Vor%

Wie Sie sehen, ist dieser Fehler ein wenig anders als bei Ihnen, aber von derselben Art. Dies kann an kleineren Änderungen im Modul pep8 liegen.

Um zu sehen, ob alles gut gelaufen ist, können Sie den Inhalt Ihres Python-Pfades und den Speicherort des pep8 -Moduls überprüfen.

%Vor%

Dies sagt dir, welches pep8 -Modul dein Python benutzt. Dies sollte irgendwo in Ihre Python-Distribution und nicht in einen Ihrer lokalen Ordner zeigen. Wenn es in Ihre Dateien zeigt, ist dies ein Problem mit Ihrer sys.path , der Liste der Pfade, die Python beim Import überprüft:

%Vor%

Hier sehen Sie alle Ordner, in denen Python das pep8 Modul durchsucht (von oben nach unten). Wenn also ein Pfad dort ist, der auf einen Ort zeigt, an dem man nicht erwarten würde, dass ein Python-Paket existieren würde, könnte das der Übeltäter sein.

(Weitere Informationen: reddit thred )

Andere mögliche Lösungen

Wenn Sie mit der neuesten Version Ihr Problem nicht lösen, können Sie mit conda eine virtuelle Umgebung erstellen, in der Sie flake8 und alle zugehörigen Abhängigkeiten installieren können, um Interaktionen mit anderen Teilen Ihrer Python-Installation zu vermeiden. Erstellen Sie nach dem Download von conda eine neue Umgebung (meine heißt fl8), aktivieren Sie sie, installieren Sie flake8 und verwenden Sie sie:

%Vor%

Betreffend Emacs

Wenn Sie Emacs über die Befehlszeile starten, verwendet es dieselbe Umgebung wie die Shell, von der Sie es gestartet haben. Um Flake8 aus einer Umgebung wie oben zu verwenden, müssen Sie zuerst die Umgebung aktivieren. Ich habe meinen Emacs mit elpy nach diesem Tutorial eingerichtet. Um es mit Conda arbeiten zu lassen, habe ich Flocke usw. auch in der Root-Umgebung installiert.

Wenn Sie Emacs anders starten (zum Beispiel mit M-F2 unter Ubuntu oder über das Startmenü), funktioniert die Umgebung möglicherweise nicht richtig. Ich habe noch nicht ganz verstanden, wie ich das beheben kann.

    
m00am 15.12.2017 14:14
quelle

Tags und Links