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:
@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:
__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:
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.
@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman