553 Stimmen

Unresolved Referenzproblem in PyCharm

Ich habe eine Verzeichnisstruktur

 simulate.py
 src
    networkAlgorithm.py
    ...

Und ich kann auf das Netzwerkmodul mit sys.path.insert() zugreifen.

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

Allerdings beschwert sich PyCharm, dass es nicht auf das Modul zugreifen kann. Wie kann ich PyCharm beibringen, die Referenz aufzulösen?

Bildbeschreibung eingeben

9voto

Ouss Punkte 1975

Es gibt mehrere Gründe, warum das passieren könnte. Hier sind mehrere Schritte, die die meisten dieser Fälle beheben:

.idea Cache-Problem

Einige .idea-Probleme verursachen, dass die IDE einen Fehler anzeigt, obwohl der Code immer noch korrekt funktioniert. Lösung:

  1. Projekt schließen und PyCharm schnell beenden
  2. Löschen Sie den .idea-Ordner, in dem sich das Projekt befindet. Beachten Sie, dass es sich um einen versteckten Ordner handelt und Sie vielleicht nicht wissen, dass er in Ihrem Projektverzeichnis existiert.
  3. Pycharm starten und das Projekt neu erstellen

Imports sind relativ zum Projektordner

Relative Imports, während der Code-Stammordner nicht mit dem Projektordner übereinstimmt. Lösung:

  1. Finden Sie den Ordner, den relative Imports im Projekt-Explorer benötigen
  2. Rechtsklicken Sie darauf und markieren Sie es als "Source Root"

Editor markiert init.py nicht als Python, sondern als Text

Das ist der rätselhafteste aller Fälle. Hier betrachtet PyCharm aus irgendeinem Grund alle __init__.py-Dateien nicht als Python-Dateien und ignoriert sie daher während der Codeanalyse. Um das zu beheben:

  1. Öffnen Sie die PyCharm-Einstellungen
  2. Navigieren Sie zu Editor -> Dateitypen
  3. Finden Sie Python und fügen Sie __init__.py zur Liste der Python-Dateien hinzu

oder

  1. Finden Sie Text und löschen Sie __init__.py aus der Liste der Textdateien

7voto

bomben Punkte 542

Das Projekt, das ich geklont habe, hatte ein Verzeichnis namens modules und verwendete Dateien daraus erfolgreich im Code mit import this as that, aber Pycharm konnte nicht zu diesen Codefragmenten springen, weil es die Importe nicht erkannt hat.

Das Markieren des Modulordners im folgenden Einstellungsabschnitt als source hat das Problem gelöst.

Pycharm-Einstellungen

6voto

Waqas Kayani Punkte 151

Auch wenn alle Antworten wirklich hilfreich sind, gibt es ein kleines Stück Information, das explizit erklärt werden sollte:

  • Im Grunde genommen funktioniert ein Projekt mit mehreren hierarchischen Verzeichnissen wie ein Paket mit einigen Attributen.
  • Um benutzerdefinierte lokal erstellte Klassen zu importieren, müssen wir zum Verzeichnis navigieren, das die .py-Datei enthält, und dort eine __init__.py (leere) Datei erstellen.

Warum dies hilft, ist weil diese Datei benötigt wird, um Python zu ermöglichen, das Verzeichnis als Pakete zu behandeln. Prost!

4voto

Ch_y Punkte 354

Allgemein handelt es sich hier um ein fehlendes Paketproblem, setzen Sie einfach den Cursor auf die nicht aufgelöste Referenz und drücken Sie Alt+Enter, um die Optionen anzuzeigen, dann sollten Sie wissen, wie Sie es lösen können.

3voto

Benjamin Punkte 337

Nachdem ich die akzeptierte Antwort befolgt hatte, hat das folgende für mich das Problem gelöst:

Datei Einstellungen Projekt Projektabhängigkeiten

Wählen Sie das Verzeichnis/das Projekt aus, in dem sich Ihre Datei mit nicht aufgelösten Imports befindet, und aktivieren Sie das Kontrollkästchen, um PyCharm mitzuteilen, dass dieses Projekt von Ihrem anderen Projekt abhängt.

Meine Ordnerstruktur ist etwas anders als die in der Frage. Meine sieht so aus:

 MeinVerzeichnis  
      simulate.py  
 src  
      networkAlgorithm.py  
      ...

Die Angabe, dass src von MeinVerzeichnis abhängt, hat das Problem für mich gelöst!

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