On 2024-05-04 11:12, Marc Haber <[email protected]> wrote:
> ich hab mal eine Verständnisfrage.
>
> Gegeben sei ein Verzeichnis . und ein Programm ./keks.
> Weiterhin sei die Klasse MyClass1 in d/mc1.py und die Klasse MyClass2 in
> d/mc2.py definierrt.
>
> Wenn ich nun in keks die Klasse MyClass2 benutzen möchte, schreibe ich
> "from d.mc2 import MyClass2". Wnn ich in d/mc1.py dasselbe tun möchte,
> muss ich dort "from mc2 import MyClass2" schreiben,
Nein, das funktioniert nicht:
#v+
% ./keks
Traceback (most recent call last):
File "/home/hjp/tmp/marc/./keks", line 3, in <module>
from d.mc1 import MyClass1
File "/home/hjp/tmp/marc/d/mc1.py", line 1, in <module>
from mc2 import MyClass2
ModuleNotFoundError: No module named 'mc2'
#v-
Es muss
#v+
from d.mc2 import MyClass2
#v-
heißen. Ob Du das Modul von keks oder von einem anderen Modul aus
importierst, macht keinen Unterschied.
> kann also Code, der
> "verwandte" Module benutzt, nicht frei verschieben.
>
> Ist das so gedacht, oder verpass ich da was?
Wie Hartmut schon geschrieben hat, kannst
Du relative Imports verwendenm, hier also
#v+
from .mc2 import MyClass2
#v-
Ob das für Deinen Code sinnvoll ist, musst du selbst entscheiden.
hp
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
[email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]