Üst Dizinlerden Paketlerin Çağrılması [?]

Şöyle bir dizin yapım var diyelim:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
    moduleA.py

Burada ben moduleX.py dosyasından ModuleA.py dosyasındaki bir fonksiyonu nasıl çağırabilirim. Alt dizinlere inebiliyorum fakat üst dizinlere nasıl çıkacağımı kavrayamadım sanarım çift nokta kullanılıyor ama anlamadım beni aydınlatırsanız sevinirim :slight_smile:

1 Beğeni

Aslında birkaç yolu var. Öncelikle programı hangi dizinden çalıştırıyorsunuz, bu önemli. ‘package’ dizininden çalıştırdığınızı varsayıyorum. Bu durumda ister from moduleA import BirSınıf diyin ya da göreceli olarak şöyle yazın: from ..moduleA import BirSınıf diyin. İki nokta bir geri gidilmesi gerektiğini söyler. Tek nokta o an bulunulan dizini ifade eder. Üç nokta olursa iki geri gidilmesini ifade eder. Dört, beş, altı nokta, vb. hep mantık aynıdır. Yalnız bu göreceli içe aktarmayı sadece o anki dizin için kullanmanızı tavsiye ederim. Bunun dışında genellikle ilk gösterdiğim mutlak yolu kullanarak içe aktarma yapın. Çünkü modüllerin içindeki dosyaların yolları modülün dışına çok ender çıksa da modüllerin yolları sık sık değişebilir. Sonrasında göreceli yolları değiştirmeniz gerekir ki zahmetli olabilir.

3 Beğeni