Seite 1 von 1
Import zeigt Fehler, funktioniert aber
Verfasst: Sonntag 8. Januar 2023, 13:59
von Selectet
Hallo zusammen,
Ich möchte ein eigenes Modul in das Hauptprogramm importieren, das klappt auch soweit, allerdings wird bei "import taschenrechner" das Modul mit einem Fehler angezeigt 'Import "taschenrechner" could not be resolved Pylance(reportMissingImport)".
Hier der Code:
Code: Alles auswählen
import sys
sys.path.insert(0,'C:/Users/Admin/Desktop/python_projekte/module')
import taschenrechner
ausgabe = taschenrechner.addieren(20,3)
print(ausgabe)
Kann mir jemand sagen warum der Name nicht aufegelöst werden kann? Oder ist das normal?
Als IDE nutze ich Visual Studio Code
Re: Import zeigt Fehler, funktioniert aber
Verfasst: Sonntag 8. Januar 2023, 14:31
von __blackjack__
@Selectet: Das wird Dir von der IDE angezeigt, nicht von Python. Python findet das Modul weil es den Code *ausführt*. Und da fügst Du am Anfang etwas zu `sys.path` hinzu. Pylance analysiert den Code statisch und weiss nichts davon was passiert wenn man den Code tatsächlich ausführt und findet das Modul deshalb nicht.
Das bei einer statischen Analyse von Quelltext einer sehr dynamischen Programmiersprache Fehler nicht erkannt, oder aber korrekter Code als fehlerhaft erkannt werden kann ist normal.
Was aber eher nicht so normal ist, ist das hinzufügen von Pfaden zu `sys.path` auf diese Weise. Wenn man Module (oder Packages) geschrieben hat, die in anderen Programmen benutzt werden, dann installiert man die normalerweise, und fügt keine Pfade manuell zu `sys.path` im Programm hinzu.
Das Programm geht übrigens kürzer, weil es die Funktion bereits in der Standardbibliothek gibt:
Code: Alles auswählen
from operator import add as addieren
print(addieren(20,3))
Re: Import zeigt Fehler, funktioniert aber
Verfasst: Sonntag 8. Januar 2023, 16:02
von Selectet
__blackjack__ hat geschrieben: ↑Sonntag 8. Januar 2023, 14:31
@Selectet: Das wird Dir von der IDE angezeigt, nicht von Python. Python findet das Modul weil es den Code *ausführt*. Und da fügst Du am Anfang etwas zu `sys.path` hinzu. Pylance analysiert den Code statisch und weiss nichts davon was passiert wenn man den Code tatsächlich ausführt und findet das Modul deshalb nicht.
Das bei einer statischen Analyse von Quelltext einer sehr dynamischen Programmiersprache Fehler nicht erkannt, oder aber korrekter Code als fehlerhaft erkannt werden kann ist normal.
Erstmal danke dafür
__blackjack__ hat geschrieben: ↑Sonntag 8. Januar 2023, 14:31
Was aber eher nicht so normal ist, ist das hinzufügen von Pfaden zu `sys.path` auf diese Weise. Wenn man Module (oder Packages) geschrieben hat, die in anderen Programmen benutzt werden, dann installiert man die normalerweise, und fügt keine Pfade manuell zu `sys.path` im Programm hinzu.
Das Programm geht übrigens kürzer, weil es die Funktion bereits in der Standardbibliothek gibt:
Code: Alles auswählen
from operator import add as addieren
print(addieren(20,3))
Wie installiere ich denn meine eigene Module?
Und ich wollte mit dem Programm nur das importieren eines eigenen Moduls testen, die Funktion ist dabei Nebensache, trotzdem danke.
Re: Import zeigt Fehler, funktioniert aber
Verfasst: Sonntag 8. Januar 2023, 16:58
von __blackjack__
@Selectet: Paketieren, verteilen, und installieren von Modulen/Packages ist ein etwas umfangreicheres Thema. Da gibt's Dokumentation, angefangen bei der Python-Dokumentation selbst und dann natürlich „The Python Packaging User Guide“. Wie man venvs erstellt und benutzt wäre vorher auch nicht schlecht zu wissen.
Vielleicht solltest Du aber erst einmal damit anfangen Dich mit Packages auseinanderzusetzen. Da importiert man ja auch Module, muss aber weder an `sys.path` rumfummeln, noch irgendetwas installieren.
Noch einfacher ist es Module zu importieren, die im gleichen Verzeichnis liegen wie das Modul, welches als Programm ausgeführt wird. Aber das macht man eher nicht, weil alle diese Module auf ”oberster” Ebene mit den installierten Modulen und Packages konkurrieren, und man sich damit leicht Probleme einfangen kann, wenn man ein Modul so genannt hat wie ein anderes Modul das mit der Standardbibliothek kommt, oder installiert wurde. Wenn man ein eigenes Programm auf mehrere Module aufteilt, sollte man das besser gleich in einem Package zusammenfassen, um nur einen Namen zu haben, der eindeutig sein muss.
Re: Import zeigt Fehler, funktioniert aber
Verfasst: Sonntag 8. Januar 2023, 17:04
von Selectet
Dankeschön, das werde ich mir nochmal genauer ansehen.