Ich verwende das folgende Setup
- macOS v10.14 (Mojave)
- Python 3.7.1
- Visual Studio Code 1.30
- Pylint 2.2.2
- Django 2.1.4
Ich möchte Flusen verwenden, um mein Leben in Visual Studio Code ein bisschen einfacher zu machen. Für jeden Import habe ich jedoch den Status "ungelöster Import". Auch bei Standard-Django-Importen (dh von django.db-Importmodellen).
Ich nehme an, es liegt daran, dass die Python-Dateien der virtuellen Umgebung nicht angezeigt werden.
Alles funktioniert gut, aber es wird langsam nervig.
Die Interpreter-Auswahlmöglichkeiten, die ich habe, sind alle Systemversionen von Python. Meine virtuelle Umgebung Python scheint überhaupt nicht zu sehen (sie befindet sich nicht im selben Verzeichnis wie mein Arbeitsbereich, daher ist dieser Teil sinnvoll).
Wenn ich python.PythonPath in der Datei settings.json einrichte , wird es einfach ignoriert und mein Pfad für die virtuelle Umgebung wird nicht als Option aufgeführt. Ich habe auch versucht, es in meinen globalen Python-Einstellungen einzurichten, aber es wird auch nicht angezeigt.
Gibt es eine schnelle Lösung, um es zum Laufen zu bringen?
pip install pylint-django
, dann fügen Sie in vs Code-Einstellungen"python.linting.pylintArgs": [ "--load-plugins=pylint_django", ],
Antworten:
In Ihren Arbeitsbereichseinstellungen können Sie Ihren Python-Pfad folgendermaßen festlegen:
{ "python.pythonPath": "/path/to/your/venv/bin/python", }
quelle
code <project_directory> -r
) neu zu laden , oder starten Sie einfach den vscode neu.manage.py
in der Wurzel von istworkspace
. StellenDie akzeptierte Antwort behebt den Fehler beim Importieren eigener Module nicht.
Verwenden Sie die folgenden Einstellungen in Ihren Arbeitsbereichseinstellungen
.vscode/settings.json
:"python.autoComplete.extraPaths": ["./path-to-your-code"],
Referenz: Fehlerbehebung, ungelöste Importwarnungen
quelle
Alternativ: Verwenden Sie die Befehlsoberfläche!
Cmd/ Ctrl+ Shift+ P→ Python: Wählen Sie Interpreter → Wählen Sie das mit den Paketen, nach denen Sie suchen:
quelle
Dieses Problem wurde bereits auf GitHub geöffnet:
Python ungelöstes Importproblem # 3840
Es gibt zwei sehr nützliche Antworten von MagnuesBrzenk und SpenHouet.
Die derzeit beste Lösung besteht darin, eine ENV-Datei in Ihrem Projektstammordner zu erstellen. Fügen Sie dann einen PYTHONPATH wie folgt hinzu:
Und in Ihrer settings.json hinzufügen:
"python.envFile": ".env"
quelle
"${workspaceFolder}/.env"
PYTHONPATH=FolderName
add2virtualenv YOUR/MODULES/PATH
z. B. mithilfe ) und diese virtuelle Umgebung als Python-Interpreter auszuwählen.Wenn Sie diesen Code in Ihrer
settings.json
Datei haben, löschen Sie ihn:{ "python.jediEnabled": false }
quelle
Ich konnte dieses Problem beheben, indem ich jedi in .vscode \ settings.json aktivierte
"python.jediEnabled": true
Referenz von https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675
quelle
Wenn Sie visueller sind als ich, können Sie die Visual Studio Code-Konfigurationen im Menü Datei → Einstellungen → Einstellungen ( Ctrl+ ,) verwenden. Gehen Sie zu Erweiterungen → Python .
Fügen Sie im Abschnitt Analyse: Deaktiviert die Unterdrückung der folgenden Meldung hinzu
unresolved-import
::quelle
Wenn ich das mache
> reload window
, wird es behoben.Referenz: Python ungelöstes Importproblem # 3840, Kommentar von dkavraal
quelle
Sie müssen den der virtuellen Umgebung zugeordneten Interpreter auswählen.
Klicken Sie hier (in der unteren Statusleiste):
Wählen Sie einfach die virtuelle Umgebung aus, mit der Sie arbeiten. Erledigt.
Manchmal funktioniert es sogar mit dem ausgewählten Interpreter nicht. Wiederholen Sie den Vorgang einfach noch einmal und er sollte ihn lösen.
quelle
Keine der Lösungen funktionierte außer dieser. Das Ersetzen von "Pylance" oder "Microsoft" in der settings.json löste meine.
"python.languageServer": "Jedi"
quelle
Ich frage mich, wie viele Lösungen dieses Problem hat (oder nicht). Ich habe die meisten der oben genannten Versuche ausprobiert. Nichts hat funktioniert. Die einzige Lösung, die funktioniert hat, besteht darin, den Python-Sprachserver in der Datei settings.json auf Jedi anstatt auf Microsoft zu setzen:
"python.languageServer": "Jedi"
quelle
Meine Lösung
Diese Lösung gilt nur für das aktuelle Projekt.
Erstellen Sie im Projektstamm einen Ordner
.vscode
Dann erstellen Sie die Datei
.vscode/settings.json
Fügen Sie in der Datei
setting.json
die Zeile hinzu (dies ist für Python 3).{ "python.pythonPath": "/usr/local/bin/python3", }
Dies ist das Beispiel für Python 2
{ "python.pythonPath": "/usr/local/bin/python", }
Wenn Sie nicht wissen, wo sich Ihre Python-Installation befindet, führen Sie einfach den Befehl
which python
oderwhich python3
das Terminal aus. Der Python-Speicherort wird gedruckt.Dieses Beispiel funktioniert für Dockerized Python - Django.
quelle
Für mich hing das Problem mit dem Projekt zusammen, an dem ich arbeitete. Ich habe eine Weile gebraucht, um es herauszufinden, also hoffe ich, dass dies hilft:
Ursprüngliche Ordnerstruktur:
root/ __init__.py # Empty folder/ __init__.py # Empty sub_folder_b/ my_code.py sub_folder_c/ another_code.py
In another_code.py:
from folder.sub_folder_b import my_code.py
Dies hat den Intellisense in Visual Studio Code nicht ausgelöst, aber OK ausgeführt.
Auf der anderen Seite hat das Hinzufügen von "root" zum Importpfad die Intellisense-Funktion aktiviert, bei der Ausführung jedoch ModuleNotFoundError ausgelöst:
from root.folder.sub_folder_b import my_code.py
Die Lösung bestand darin, die Datei _ init _.py im Verzeichnis "folder" zu entfernen und nur die Datei _ init _.py unter zu belassen
/root
.quelle
Keine der vorherigen Antworten hat bei mir funktioniert. Das Hinzufügen der beiden folgenden Zeilen zu meiner Datei settings.json hat dies jedoch getan.
"python.analysis.disabled": [ "unresolved-import" ], "python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
Die erste Zeile verbirgt wirklich nur den Flusenfehler. Sicherlich keine dauerhafte Lösung, aber der Bildschirm wird unübersichtlich.
Diese Antwort gab mir die zweite Zeile: VS Code PyLint Fehler E0602 (undefinierte Variable) mit ProtoBuf kompilierter Python Structure
Vielleicht kann jemand, der Python besser versteht als ich, das noch mehr erklären.
quelle
Die Lösung von Shinebayar G hat funktioniert, aber diese andere ist etwas eleganter:
Kopiert aus Python ungelöstes Importproblem # 3840 :
Bei folgender Beispielprojektstruktur:
Was ich getan habe, um dieses Problem zu beheben:
quelle
Das funktioniert bei mir:
Öffnen Sie die Befehlspalette ( Ctrl+ Shift+ P) und wählen Sie "Python: Interpreter auswählen".
Dabei legen Sie den Python-Interpreter in Visual Studio Code fest.
quelle
Dies liegt daran, dass Visual Studio Code Ihren aktuellen Ordner als Hauptordner betrachtet, anstatt den tatsächlichen Hauptordner.
Die schnelle Lösung besteht darin, den Interpreterpfad zum Hauptordner anzugeben.
Drücken Sie Command+ Shift+ P(oder Ctrl+ Shift+ Pauf den meisten anderen Systemen).
Geben Sie Python Interpreter ein
Wählen Sie aus den verfügbaren Optionen den Pfad aus, in dem Sie Python installiert haben.
quelle
Das Ändern von Python: Language Server in 'Jedi' hat bei mir funktioniert. Anfangs war es 'Windows'.
quelle
Ich habe eine andere Lösung: Meine Visual Studio Code-Instanz hat die darin gespeicherte virtuelle Umgebung aufgenommen
.venv
, verwendet jedoch die falsche Python-Binärdatei. Es wurde benutzt.venv/bin/python3.7
; Verwenden des Umschalters in der blauen Statusleiste.Ich habe es geändert
.venv/bin/python
und alle meine Importe wurden korrekt aufgelöst.Ich weiß nicht, was Visual Studio Code hinter den Kulissen tut, und ich verstehe auch nicht, warum dies mein Problem verursacht hat, aber für mich war dies eine etwas einfachere Lösung als das Bearbeiten meiner Arbeitsbereichseinstellungen.
quelle
Installieren Sie im Falle eines Pylint-Fehlers Folgendes
Erstellen Sie dann eine Datei, .pylintrc , im Stammordner und schreiben Sie Folgendes
quelle
Ich habe den Importfehler durch Ctrl+ Shift+ behoben P. Geben Sie "Einstellungen" ein und wählen Sie die Option " Einstellungen öffnen" (JSON).
Und füge die Zeile hinzu
"python.pythonPath": "/usr/bin/"
Der JSON-Inhalt sollte also folgendermaßen aussehen:
{ "python.pythonPath": "/usr/bin/" }
Behalten Sie andere Konfigurationszeilen bei, wenn diese vorhanden sind. Dies sollte alle Module importieren, die Sie mit PIP für die automatische Vervollständigung installiert haben.
quelle
Meine Lösung bestand darin, Visual Studio Code in einem vorherigen Verzeichnis zu öffnen.
quelle
In meinem Fall hatte ich bereits eine Conda- Umgebung aktiviert, aber ich wollte immer noch, dass lokale Python-Module für die automatische Vervollständigung, die Peeking-Definition usw. verfügbar sind.
Ich habe viele Lösungen ausprobiert, z. B. das Hinzufügen einer Liste von Python-Pfaden usw., aber was es schließlich für mich gelöst hat, war, eine symbolische Verknüpfung von Conda
lib/python{your version}/site-packages
zu meinem lokalen Modul herzustellen.quelle
Ich habe eine Bibliothek, die beim Versuch, sie mithilfe des Jedi-Sprachdienstes einzuschließen, fehlerhaft ist und ohne sie einwandfrei funktioniert (dh die C # 1).
Die Bibliothek ist jsonslicer und hängt von einer externen C-Bibliothek ab, in die ich installiert habe
/usr/local/lib
. Könnte das etwas damit zu tun haben?Ich habe den Jedi-Dienst und die Bibliothek in meiner Conda- Umgebung installiert und diese Umgebung in Visual Studio verwendet. Es funktioniert zur Laufzeit und in meinem Terminal einwandfrei, jedoch nicht, wenn in meinen Quelldateien nach Problemen gesucht wird, und es wird als Fehler angezeigt.
quelle
Stellen Sie zunächst sicher, dass Sie das Plugin installiert haben, aber es ist wahrscheinlich, dass das Arbeitsbereichsverzeichnis nicht richtig eingestellt ist. Überprüfen Sie einfach Pylint und bearbeiten Sie die zugrunde liegende Datei settings.json.
{ "python.pythonPath": "/usr/local/bin/python3", "git.ignoreLimitWarning": true }
quelle
Installieren Sie Code-Runner und fügen Sie den folgenden Code im Ordner settings.json hinzu:
"code-runner.executorMap": { "python": "python3 -u", }
"python": "(die mit Modulen oder ihrem Pfad ausführbare Python-Datei) -u",
quelle
Ich habe dieses Problem auf drei Arten angegangen. Obwohl für jeden von ihnen eine Lösung in den Antworten auf diese Frage verfügbar ist, dachte ich nur daran, alles zusammenzustellen.
Zuerst bekam ich beim Importieren einiger Module einen "ungelösten Import" und bemerkte, dass meine Installationen in globaler Pip statt in der virtuellen Umgebung stattfanden.
Dieses Problem war auf den Python-Interpreter zurückzuführen. Sie müssen den Interpreter in Visual Studio Code mit Shift+ Ctrl+ auswählen Pund dann eingeben
Select Python Interpreter
. Wählen Sie hier Ihren Venv- Dolmetscher aus.Das zweite Problem war: Die obige Änderung hat mein Problem nicht vollständig gelöst. Diesmal lag es an der Datei settings.json . Wenn Sie die Datei settings.json nicht in Ihrem Projektverzeichnis haben, erstellen Sie eine und fügen Sie die folgende Zeile hinzu:
{ "python.pythonPath": "apis/bin/python" }
Dadurch wird Visual Studio Code grundsätzlich angewiesen, den Python-Interpreter zu verwenden, der sich in Ihrem Venv befindet.
Das dritte Problem war beim Importieren eines benutzerdefinierten Python-Moduls oder einer benutzerdefinierten Python-Datei in ein anderes Programm. Dazu müssen Sie die Ordnerstruktur verstehen. Da sich Python in venv in bin befindet, müssen Sie den Ordner Ihres Moduls angeben (meistens den Anwendungsordner). In meinem Fall war es
app
,from app.models import setup_db
Der Import von setup_db aus models.py befindet sich mündlich im App- Ordner.
quelle
Wenn Sie verwenden
pipenv
, müssen Sie den Pfad zu Ihrer virtuellen Umgebung in dersettings.json
Datei angeben . Zum Beispiel :{ "python.pythonPath": "/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python" }
Das kann helfen.
quelle
Ich habe das gleiche Problem mit Python 3.8.5 unter Verwendung von venv, vscode 1.48.2. Ich habe meine Lösung gefunden. In (env-Ordner) enthält / lib / site-packages die Pakete nicht. Ich benutze diese Einstellung (.vscode / settings.json)
{ "python.autoComplete.extraPaths": [ "./**", ], "python.pythonPath": "env\\Scripts\\python.exe", "python.languageServer": "Microsoft" }
quelle
Wenn jemand so schwachsinnig ist wie ich, hat das Folgende funktioniert.
Alte Ordnerstruktur:
Neue Struktur:
quelle