347 Stimmen

PyCharm zeigt nicht aufgelöste Referenzen für gültigen Code an

Ich verwende PyCharm, um an einem Projekt zu arbeiten. Das Projekt ist geöffnet und mit einem Interpreter konfiguriert und kann erfolgreich ausgeführt werden. Die Pfade der entfernten Interpreter sind richtig zugeordnet. Dies scheint die richtige Konfiguration zu sein, aber PyCharm markiert meinen gültigen Code mit "unresolved reference"-Fehlern, sogar für eingebaute Python-Funktionen. Warum werden diese anscheinend nicht erkannt, obwohl der Code läuft? Gibt es eine Möglichkeit, PyCharm dazu zu bringen, diese korrekt zu erkennen?


In diesem speziellen Fall tritt das Problem bei einem entfernten Interpreter auf, aber auch bei lokalen Interpretern tritt das Problem auf.

515voto

Dmitry Trofimov Punkte 7075

File | Invalidate Caches... und ein Neustart von PyCharm hilft.

152voto

kelorek Punkte 5907

Dmitrys Antwort hat bei mir nicht funktioniert.

Bei mir funktionierte es, indem ich auf Projektinterpreter ging, die Registerkarte "Pfade" auswählte und in diesem Untermenü auf die Schaltfläche "Aktualisieren" drückte. Es füllte sich automatisch mit etwas namens "python-skeletons".

bearbeiten Bildschirmfoto mit PyCharm 3.4.1 (es ist ziemlich gut versteckt)

enter image description here

90voto

florisla Punkte 10765

Dafür gibt es viele Lösungen, einige bequemer als andere, und sie funktionieren nicht immer.

Hier sind alle, die Sie ausprobieren können, von "schnell" bis "lästig":

  • Do File -> Invalidate Caches / Restart und starten Sie PyCharm neu.
    • Sie können dies auch nach einer der unten genannten Methoden tun, nur um sicherzugehen.
  • Prüfen Sie zunächst, welchen Interpreter Sie verwenden: Run -> Edit Configurations -> Configuration -> Python Interpreter .
  • Aktualisieren Sie die Pfade Ihres Interpreters:
    • File -> Settings
    • Project: [name] -> Project Interpreter -> "Projekt-Dolmetscher": Zahnrad-Symbol -> More...
    • Klicken Sie auf die Schaltfläche "Pfade anzeigen" (unten)
    • Klicken Sie auf die Schaltfläche "Aktualisieren" (unten)
  • Entfernen Sie den Interpreter und fügen Sie ihn wieder hinzu:
    • File -> Settings
    • Project: [name] -> Project Interpreter -> "Projekt-Dolmetscher": Zahnrad-Symbol -> More...
    • Klicken Sie auf die Schaltfläche "Entfernen".
    • Klicken Sie auf die Schaltfläche "Hinzufügen" und fügen Sie Ihren Interpeter erneut hinzu.
  • Löschen Sie Ihre Projekteinstellungen
    • Löschen Sie Ihr Projekt .idea Ordner
    • Schließen und öffnen Sie PyCharm erneut
    • Öffnen Sie Ihr Projekt von Grund auf
  • Löschen Sie Ihre PyCharm-Benutzereinstellungen (aber sichern Sie sie vorher).
    • ~/.PyCharm50 auf Mac
    • %homepath%/.PyCharm50 unter Windows
  • Wechseln Sie zu einem anderen Interpreter und dann wieder zurück zu dem gewünschten Interpreter.
  • Erstellen Sie eine neue virtuelle Umgebung, und wechseln Sie zum Interpreter dieser Umgebung.
  • Erstellen Sie eine neue virtuelle Umgebung an einem neuen Standort -- außerhalb Ihres Projektordners -- und wechseln Sie zu dem Interpreter dieser Umgebung.
  • Wechseln Sie zu einem anderen Interpreter; wechseln Sie nicht zurück.

Wenn Sie Docker verwenden, sollten Sie dies beachten:

Wenn die obige Methode bei Ihnen nicht funktioniert hat, Sie aber einen anderen Trick gefunden haben, dann hinterlassen Sie bitte einen Kommentar.

34voto

Shoham Punkte 6216

In meinem Fall war es die Struktur der Verzeichnisse. Mein Projekt sieht wie folgt aus:

+---dir_A
    +---dir_B
        +app
        |
        \-run.py

Klicken Sie also mit der rechten Maustaste auf dir_b > "Verzeichnis markieren als" > "Projekt Root".

24voto

mujad Punkte 524

Sie müssen Ihr Root-Verzeichnis als markieren: SOURCE ROOT (rot), und Ihre Anwendungen: EXCLUDED ROOT (blau).

Dann wird die ungelöste Referenz verschwinden. Wenn Sie PyChram pro verwenden, wird dies automatisch für Sie erledigt.

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X