Visual Studio Code - unable to import

Probleme bei der Installation?
Antworten
Benutzeravatar
Torsten.E
User
Beiträge: 5
Registriert: Mittwoch 8. April 2020, 09:42
Wohnort: Maria Thann

Für ein Projekt habe ich einen Projektordner erstellt.
C:\Projekt\MeinProjekt\meinemodule
C:\Projekt\MeinProjekt\aufgabe1
C:\Projekt\MeinProjekt\aufgabe2
Wenn ich jetzt von "aufgabe1" ein Modul aus "meinemodule" importiere, funktioniert das in Python ganz normal (Linux-Rechner, wo Python läuft)

Code: Alles auswählen

sys.path.append(os.getcwd()+'/..')
from meinemodule.modul1 import modul1
ABER:
Im Visual Studio Code wird mir
unable to import "meinemodule.modul1" angezeigt.

Wie kann ich das in Visual Studio Code so konfigurieren, dass er "meinemodule" korrekt findet.

Danke

Torsten.E
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein Weg den du probieren koenntest: wenn VS Code Umgebungsvariablen pro Projekt kennt, benutz PYTHONPATH.
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Torsten.E: `sys.path` so zu ändern ist ein unschöner Hack. Und Pfadteile setzt man nicht mit ``+`` zusammen sondern mit `os.path.join()` und statt ".." würde man `os.pardir` verwenden. In neuem Code nimmt man dafür aber eigentlich das `pathlib`-Moduls. Da gibt es einen Backport für Python 2 von: https://pypi.org/project/pathlib2/

Code: Alles auswählen

from pathlib2 import Path
sys.path.insert(0, str(Path.cwd().parent))
Allerdings hängt das jetzt auch wieder/immer noch vom aktuellen Arbeitsverzeichnis ab. Es sieht aber eher so aus als wolltest Du das relativ zu dem Modul in dem das ausgeführt wird:

Code: Alles auswählen

from pathlib2 import Path
sys.path.insert(0, str(Path(__file__).absolute().parent.parent))
Die saubere Lösung wäre es das Package `meinemodule` zu installieren. Dann muss man nicht so hässlich an `sys.path` rumfummeln.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Torsten.E
User
Beiträge: 5
Registriert: Mittwoch 8. April 2020, 09:42
Wohnort: Maria Thann

Hallo __blackjack__,

danke für den Hinweis.

Mein Problem ist jedoch, das der "Visual Studio Code"-Editor die Fehlermeldung

Code: Alles auswählen

"Unable to import 'meinmodule.modul1'" pylint(import-error) [16,1]
anzeigt.
D.h. ich schreibe die Pyhton-Module/Programme auf einem Windows-Rechner.
Ablaufen tun sie auf einem Linux-Rechner in einem anderen Netzwerk. (rüber kopiert)

Mir geht es also nur darum, den Editor so einzustellen, dass er die Module (in anderen Programmiersprachen würde man sagen die Libraries)
korrekt findet.
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Torsten.E: Ich habe das Problem schon verstanden und die Antwort bleibt die selbe.

Die ``sys.path``-Fummelei sieht/versteht die IDE beziehungsweise ``pylint`` halt auch nicht. Wenn Du willst das ein Modul oder Package gefunden wird das nur durch ``sys.path``-Gefummel importier bar ist, dann findet das auch nur Dein Programm zur Laufzeit.

Der Rat bleibt das Package installierbar zu machen und zu installieren. Dann wird es auch von allen beteiligten gefunden.

In dem Zusammenhang wären vielleicht noch „virtualenvs“, und die Möglichkeit Packages auch ”editierbar” zu installieren, interessant.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten