PyCharm zeigt einen ungelösten Referenzfehler für gültigen Code an

277

Ich benutze PyCharm, um an einem Projekt zu arbeiten. Das Projekt wird mit einem Interpreter geöffnet und konfiguriert und kann erfolgreich ausgeführt werden. Die Remote-Interpreter-Pfade werden ordnungsgemäß zugeordnet. Dies scheint die richtige Konfiguration zu sein, aber PyCharm hebt meinen gültigen Code mit "ungelösten Referenz" -Fehlern hervor, selbst für integrierte Python-Funktionen. Warum scheinen diese nicht erkannt zu werden, obwohl der Code ausgeführt wird? Gibt es eine Möglichkeit, PyCharm dazu zu bringen, diese korrekt zu erkennen?


Diese spezielle Instanz des Problems tritt bei einem Remote-Interpreter auf, das Problem tritt jedoch auch bei lokalen Interpreten auf.

James McCalden
quelle
Ich habe das gleiche Problem und habe es gelöst. Hier Lösung .
Maks

Antworten:

443

Datei | Caches ungültig machen ... und ein Neustart von PyCharm hilft.

Dmitry Trofimov
quelle
3
Dies ist in meinem Fall die einzige Möglichkeit, mit PyCharm 4.0.x zu arbeiten. Tatsache ist, wenn etwas schief gelaufen ist und nicht aktualisiert wird (manchmal wird sogar derselbe Interpreter mehrmals in der Liste wiederholt), müssen Sie die Dateien manuell löschen ... Ich musste sogar einmal .idea-Ordner entfernen .
Danius
10
Das ist so schwer. Gibt es keine Möglichkeit, die alte Option "Aktualisierungspfad" in PyCharm 4.5 wiederherzustellen?
Chris Withers
6
Es ist wirklich ärgerlich, dass sich eine solche IDE nicht um eine so einfache Operation kümmert.
Eduardo Pignatelli
3
Es funktioniert momentan. Nach ein paar Minuten bekomme ich wieder die gleiche Warnung
Aseem
132

Dmitrys Antwort hat bei mir nicht funktioniert.

Ich habe meine Arbeit gemacht, indem ich zu Projektinterpreter gegangen bin, die Registerkarte "Pfade" ausgewählt und auf die Schaltfläche "Aktualisieren" in diesem Untermenü geklickt habe. Es wurde automatisch mit etwas gefüllt, das "Python-Skelette" genannt wird.

Bearbeiten : Screenshot mit PyCharm 3.4.1 (es ist ziemlich gut versteckt)

Geben Sie hier die Bildbeschreibung ein

Kelorek
quelle
6
Wo ist "Python Interpreters". Meinen Sie "Projektdolmetscher"? Ich verwende Linux und konnte auch die Registerkarte Pfade nicht finden.
Baskaya
1
In PyCharm 3.4 unter OSX ist es ein Symbol, das wie ein kleiner Ordnerbaum aussieht und nicht "Pfade" sagt.
Daniel Bushman
12
Für alle, die noch verwirrt sind (in PyCharm 3.4.1):Settings > Project Settings > Project Interpreter > Project Interpreters (gear button > more) > --Select the interpreter-- > Interpreter Paths (Directory Tree button on the right) > Reload List of Paths (Blue refresh-like button)
Raphaeltm
5
In PyCharm 4 gibt es keine solche Schaltfläche zum Aktualisieren, nur die Plus- und Minuszeichen.
Thetheor
3
@Sarah In PyCharm 4.0.4 habe ich im Fenster "Interpreter Paths" nicht die Schaltfläche "Liste der Pfade neu laden" (unteres blaues Aktualisierungssymbol). Außerdem werden in der Liste keine Pfade angezeigt und die Plus- und Minus-Schaltflächen sind deaktiviert.
Henrik Heimbuerger
70

Hierfür gibt es viele Lösungen, von denen einige bequemer sind als andere, und sie funktionieren nicht immer.

Hier ist alles, was Sie versuchen können, von "schnell" zu "nervig":

  • Do File-> Invalidate Caches / Restartund PyCharm neu starten.
    • Sie können dies auch nach einer der folgenden Methoden tun, nur um sicherzugehen.
  • Überprüfen Sie zunächst, welchen Interpreter Sie verwenden: Run-> Edit Configurations-> Configuration-> Python Interpreter.
  • Aktualisieren Sie die Pfade Ihres Dolmetschers:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Projektinterpreter': Zahnradsymbol ->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 erneut hinzu:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Projektinterpreter': Zahnradsymbol ->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 den .ideaOrdner Ihres Projekts
    • Schließen Sie PyCharm und öffnen Sie es erneut
    • Öffnen Sie Ihr Projekt von Grund auf neu
  • Löschen Sie Ihre PyCharm-Benutzereinstellungen (aber sichern Sie sie zuerst).
    • ~/.PyCharm50 auf dem Mac
    • %homepath%/.PyCharm50 unter Windows
  • Wechseln Sie zu einem anderen Dolmetscher und dann wieder zu dem gewünschten.
  • Erstellen Sie eine neue virtuelle Umgebung und wechseln Sie zum Interpreter dieser Umgebung.
  • Wechseln Sie zu einem anderen Dolmetscher, wechseln Sie nicht zurück.
florisla
quelle
Ich habe dieses Problem schon so lange, wie ich PyCharm verwende, und sie können es immer noch nicht zuverlässig beheben. Gut, dass Sie den größten Teil der Arbeit auf die eine oder andere Weise erledigt haben, um das Problem zu beheben. Komisch, wie ich von Zeit zu Zeit auf diese Antwort zurückkomme, um herauszufinden, welche Arbeit ich vergessen habe, es zu versuchen.
Alex
3
Ich arbeitete mich durch diese Liste und entfernte / fügte den für mich funktionierenden Dolmetscher wieder hinzu. Vielen Dank!
Mark
16

In meinem Fall war es die Verzeichnisstruktur. Mein Projekt sieht so aus:

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

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

Shoham
quelle
2
Die Frage war nicht, dass PyCharm den Projektcode nicht erkennt . Die in Python integrierten Standardmethoden werden nicht erkannt.
Florida
Ich habe mein Problem auf PyCharm 2019.3.3 unter MacOS
gelöst
11

Ich finde mich dabei, den Remote-Interpreter zu entfernen und erneut hinzuzufügen, um dieses Problem zu beheben, wenn das Ungültigmachen von Caches oder das Aktualisieren von Pfaden nicht funktioniert.

Ich verwende vagrant und hin und wieder, wenn ich meinem Multi-VM-Setup eine neue VM hinzufüge, ändert sich der weitergeleitete Port und dies scheint PyCharm zu verwirren, wenn versucht wird, den falschen Port für SSH zu verwenden. Das Ändern des Ports scheint den defekten Referenzen nicht zu helfen.

Thomas Farvour
quelle
10

Wenn keine der anderen Lösungen für Sie funktioniert, versuchen Sie (Sichern) und löschen Sie Ihren Ordner ~ / .PyCharm40, und öffnen Sie PyCharm erneut. Dies wird auch alle Ihre Vorlieben zerstören.

Auf dem Mac möchten Sie ~ / Library / Caches / Pycharm40 und ~ / Library / Preferences / PyCharm40 löschen.

Und unter Windows: C: \ Users \ $ USER.PyCharm40.

Imran
quelle
10

Getestet mit PyCharm 4.0.6 (OSX 10.10.3) wie folgt:

  1. Klicken Sie auf das PyCharm-Menü.
  2. Wählen Sie Projektinterpreter.
  3. Wählen Sie das Zahnradsymbol.
  4. Wählen Sie die Schaltfläche Mehr.
  5. Wählen Sie den Projektinterpreter aus, in dem Sie sich befinden.
  6. Wählen Sie die Schaltfläche Verzeichnisbaum.
  7. Wählen Sie Liste der Pfade neu laden.

Problem gelöst!

Siripan
quelle
8

sehr leicht

Sie müssen nur Ihr Stammverzeichnis wie folgt markieren: SOURCE ROOT (rot) und Ihre Anwendungen: EXCLUDED ROOT (blau),

dann verschwindet die ungelöste Referenz.

  • Geben Sie hier die Bildbeschreibung einWenn Sie PyChram Pro verwenden, wird dies automatisch für Sie erledigt.
Mujad
quelle
5
Ich habe Pycharm Pro und es hat dies nicht für mich getan, aber nachdem ich die Ordner manuell korrekt markiert habe, hat es funktioniert
Jose
6

Es tut mir leid, diese Frage zu beantworten, ich muss jedoch ein wichtiges Update vornehmen.

Möglicherweise möchten Sie Ihren Projektinterpreter auch auf Python 2.7.6 zurücksetzen, wenn Sie eine andere Version als diese verwenden. Dies funktionierte bei meiner Ubuntu-Installation von PyCharm 4.04 professional für mich, nachdem keine der anderen Empfehlungen mein Problem gelöst hatte.

Fairlight Evony
quelle
1
Das Wechseln zum lokalen Python 2-Interpreter und dann wieder zurück zu Ihrem entfernten Python 3-Interpreter hat dies auch für mich behoben.
James Fletcher
Dies funktioniert auch mit PyCharm 5 Professional. Keine der anderen Lösungen in diesem Beitrag hat für mich funktioniert. Ich ging hinein Settings -> "Project Interpreters", schaltete den Gang ein und dann "More...". Wählen Sie den Standard-Python-Interpreter ( /usr/bin/python2.7in meinem Fall), drücken Sie "Ok"und "Apply". Dann ging ich wieder hinein und wählte die tatsächliche virtuelle Umgebung, die ich verwenden wollte. "Ok"und "Apply"wieder, und es ist behoben.
Josh
Ähnlich FileNotFoundErrorist es nur mit Python-3. Nachdem ich den richtigen Interpreter sowohl in File-Settings-Project-Interpreter als auch in Run-Edit-Configurations eingestellt hatte, ließ einer von diesen den Fehler verschwinden.
Bob Stein
3

Sie können versuchen, Pycharm zu schließen, den .ideaOrdner aus Ihrem Projekt zu löschen , Pycharm erneut zu starten und das Projekt neu zu erstellen. Dies funktionierte für mich, während das Ungültigmachen des Caches dies nicht tat.

Jason McVetta
quelle
2

Ich habe es endlich geschafft, nachdem keine der vorgeschlagenen Lösungen für mich funktioniert hat. Ich spielte mit einem Django Rest Framework-Projekt und verwendete eine virtuelle Umgebung, die ich damit eingerichtet hatte. Ich konnte Pycharm reparieren, indem ich den Stammordner als Quellstamm markierte, aber dann löste der Server von django Auflösungsausnahmen aus. Also würde einer arbeiten, wenn der andere nicht würde und umgekehrt.

Letztendlich musste ich nur den Unterordner als Quellwurzel in pycharm markieren. Meine Struktur war also so

-playground
     -env
     -playground

Dieser zweite Spielplatzordner war derjenige, den ich als Quellstamm markieren musste, damit alles wie erwartet funktioniert. Das war für mein Szenario kein Problem, daher war es eine praktikable Lösung.

Ich dachte nur, ich würde teilen, falls jemand anderes es benutzen kann.

user2233949
quelle
2

Es könnte auch ein Problem mit der Python-Version sein. Ich musste das richtige auswählen, damit es funktioniert. Geben Sie hier die Bildbeschreibung ein

Shehaaz
quelle
2

Wenn Sie nur einige "ungelöste Referenz" -Fehler ignorieren möchten, können Sie PyCharm auch explizit mitteilen, indem Sie dies vor Ihre Klasse / Methode / Funktion stellen:

# noinspection PyUnresolvedReferences
flix
quelle
1

Ich habe alle anderen Projekte geschlossen und mein erforderliches Projekt isoliert in Pycharm ausgeführt. Ich habe eine separate virtuelle Umgebung von pycharm erstellt und alle erforderlichen Module mithilfe von pip hinzugefügt. Ich habe diese virtuelle Umgebung im Interpreter des Projekts hinzugefügt. Dies löste mein Problem.

Waqar Detho
quelle
1

Geeze, was für ein Albtraum, meine Zusammenführung verschiedener StackOVerflow-Antworten:

  1. Wechseln Sie zum lokalen Interpreter /usr/bin/pythonX.X und bewerben Sie sich
  2. Pfade wie oben anzeigen anzeigen
  3. Finde den Pfad der Skelette. Meins war (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Wechseln Sie zurück zum virtuellen Interpreter und fügen Sie den Skelettpfad manuell hinzu, wenn er nicht automatisch angezeigt wird.
Tim
quelle
1

Keine der oben genannten Lösungen hat bei mir funktioniert!
Wenn Sie für Ihr Projekt eine virtuelle Umgebung verwenden, stellen Sie sicher, dass Sie die python.exeDatei in Ihrem Verzeichnis für die virtuelle Umgebung als Interpreter für das Projekt anwenden. (Alt + Ctrl + Shift + S) Dadurch wurde das Problem für mich behoben.

Ali Sherafat
quelle
1

In meinem Fall wird der Inspektionsfehler aufgrund eines ganz bestimmten Falles von Python-Code angezeigt. Eine Min-Funktion, die zwei Numpy-Funktionen und zwei Listenzugriffe enthält, führt dazu, dass meine Codeüberprüfung diese Art von Fehlern verursacht.

Das Entfernen der Zeile 'd = 0' im folgenden Beispiel führt erwartungsgemäß zu einem ungelösten Referenzfehler, aber beim Lesen wird der Fehler für den Codeinspektor nicht behoben. Ich kann den Code danach immer noch ohne Probleme ausführen.

import numpy as np
def strange(S, T, U, V):
    d = 0
    print min(np.abs(S[d]), np.abs(T[d]), U[d], V[d])

Das Löschen von Caches und das erneute Laden der Pfadliste funktioniert nicht. Nur das Ändern des Codes mit einem der folgenden Beispiel-Patches funktioniert:

  • Eine andere Reihenfolge der 'min'-Parameter: schematisch SUTV, aber nicht STUV oder TSUV
  • Verwenden einer Methode anstelle der Funktion: S [d] .abs () anstelle von np.abs (S [d])
  • Verwenden der integrierten Funktion abs ()
  • Hinzufügen einer Zahl zu einem Parameter Ihrer Wahl: U [d] + 0.
Wannes Goethals
quelle
1

Keine der Antworten löste mein Problem.

Was es für mich getan hat, war, die Umgebung zu wechseln und zur gleichen Umgebung zurückzukehren. File->Settings->Project interpreter

Ich benutze Conda-Umgebungen.

Kristjan Kica
quelle
1

Arbeitete für mich mit viel einfacherer Aktion :


File > Settings > Project > Project Interpreter 
> Select "No interpreter" in the "Project interpreter" list 
> Apply > Set your python interpreter again > Click Apply

Profit - Pycharm aktualisiert Skelette und alles ist in Ordnung.

Alexander.Iljushkin
quelle
0

Wenn Sie vagrantden Fehler verwenden, kann dies durch einen falschen Python-Interpreter verursacht werden. In unserem verwenden vagrantwir pyenvalso musste ich den Python Interpreter pathWeg von /usr/bin/pythonnach ändern/home/vagrant/.pyenv/versions/vagrant/bin/python Geben Sie hier die Bildbeschreibung ein

Daniil Mashkin
quelle
0

Ich habe ein Projekt, bei dem eine Datei eine src/andere Datei in dasselbe Verzeichnis importiert. Um PyCharm zu erkennen, musste ich zu Datei> Einstellungen> Projekt> Projektstruktur> srcOrdner auswählen und auf "Markieren als: Quellen" klicken.

Von https://www.jetbrains.com/help/pycharm/configuring-folders-within-a-content-root.html

Quellwurzeln enthalten die eigentlichen Quelldateien und Ressourcen. PyCharm verwendet die Quellwurzeln als Ausgangspunkt für die Auflösung von Importen

qwr
quelle
0

Mein Problem ist, dass Flask-WTF von PyCharm nicht gelöst wird . Ich habe versucht, den Cache neu zu installieren und dann zu installieren oder ungültig zu machen und PyCharm neu zu starten, aber es funktioniert immer noch nicht.

Dann habe ich mir diese Lösung ausgedacht und sie funktioniert perfekt für mich.

  1. Öffnen Sie den Projektinterpreter mit Strg + Alt + S (Windows) und klicken Sie dann auf Neues Paket installieren (+) .

Geben Sie hier die Bildbeschreibung ein

  1. Geben Sie das Paket ein, das von PyCharm nicht aufgelöst wird, und klicken Sie dann auf Paket installieren . Klicken Sie dann auf OK .

Geben Sie hier die Bildbeschreibung ein

Jetzt sehen Sie, dass Ihre Bibliothek aufgelöst wurde.

Hien Quang Le
quelle
-1

Verwenden Sie virtualenv?

In diesem Fall müssen Sie PyCharm über jede Änderung des Speicherorts der gewünschten python.exe informieren (lediglich ./activate reicht für PyCharm nicht aus.)

Stellen Sie sicher, dass Pycharm auf den richtigen Interpetor und die richtigen Pakete zeigt: Datei -> Einstellungen -> Projekt -> Projektinterpreter. Klicken Sie auf das Zahnrad und wählen Sie python.exe im Skriptordner von virtualenv

Geben Sie hier die Bildbeschreibung ein

Bar Horing
quelle