Merhaba,
Python projelerinde sürekli kullandığım 3. şahıs modüllerini nasıl normal modül gibi tanıtabilirim?
Biraz daha açsana
20 karakter
Modullerin bulunduklari directory’leri PYTHONPATH
veya PATH
environment variable’larina yazarsan import esnasinda bulunabilmeleri lazim.
Modüllerin Yolu
Python geliştiricilerinin yazıp dile kaynaştırdığı kütüphane modülleri ile kendi yazdığınız modüller arasında pek bir fark bulunmadığını ifade etmiştik. Her iki modül türü de, içinde Python komutlarını ve veri tiplerini barındıran alelade Python programlarından ibarettir.
Ancak şimdiye kadar yaptığımız örneklerde bir şey dikkatinizi çekmiş olmalı. Kütüphane modüllerini her yerden içe aktarabiliyoruz. Yani, komut satırını çalıştırdığımız her konumda veya program dosyamızın bulunduğu her dizin altında bu modülleri rahatlıkla kullanabiliyoruz. Python’ın bu modülleri bulamaması gibi bir şey söz konusu değil.
Ama kendi yazdığımız modülleri içe aktarabilmemiz için, bu modüllerin o anda içinde bulunduğumuz dizin altında yer alması gerekiyor. Yani mesela yukarıda örneğini verdiğimiz sözlük
modülünü, sözlük.py dosyasını bilgisayarımızdaki hangi konuma kaydetmişsek o konumdan içe aktarabiliyoruz.
Diyelim ki sözlük.py dosyasını masaüstüne kaydetmiştik. İşte bu modülü komut satırında içe aktarabilmemiz için, komut satırını da masaüstünün bulunduğu konumda çalıştırmış olmamız gerekiyor.
Aynı şekilde eğer biz bu sözlük
modülünü, deneme.py adlı başka bir program içinde kullanacaksak, bu deneme.py dosyasının da sözlük.py adlı dosya ile aynı dizinde yer alması gerekiyor.
Aksi halde, import sözlük
komutu hata verecektir.
Peki neden kütüphane modüllerini her yerden içe aktarabilirken, kendi yazdığımız modülleri yalnızca bulundukları dizin altında içe aktarabiliyoruz?
Aslında bunun cevabı çok basit: Biz bir program dosyasında veya komut satırında import modül_adı
gibi bir komut verdiğimizde Python ‘modül_adı’ olarak belirttiğimiz modülü bulmak için bir arama işlemi gerçekleştirir. Elbette Python bu modülü sabit diskin tamamında aramaz. Python, içe aktarmak istediğimiz modülü bulmak için belli birtakım dizinlerin içini kontrol eder. Peki Python modül dosyasını bulmak için hangi dizinlerin içine bakar? Bu sorunun cevabını bize sys
modülünün path adlı bir niteliği verecek. Hemen bakalım:
>>> import sys
>>> sys.path
İşte Python bir modül dosyasını ararken, import
komutunun verildiği dizin ile birlikte, sys.path
çıktısında görünen dizinlerin içine de bakar. Eğer modül dosyasını bu dizinlerin içinde bulursa modülü başarıyla içe aktarır, ama eğer bulamazsa ImportError
cinsinden bir hata verir.
Peki eğer biz kendi modüllerimizi de her yerden içe aktarabilmek istersek ne yapmamız gerekiyor?
Bunun için iki seçeneğimiz var: Birincisi, modülün yolunu sys.path
listesine ekleyebiliriz. İkincisi, modülümüzü sys.path
içinde görünen dizinlerden birine kopyalayabilir veya taşıyabiliriz.
yardımınız için çok teşşekür ederim
Rica ederiz,
Faydalı olabildiysek ne âlâ.