On 2024-05-04 11:12, Marc Haber <mh+python...@zugschlus.de> 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 -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an 
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: arch...@mail-archive.com

Reply via email to