Python modüllerini nasıl bulur?
Kesinlikle alındığında, bir modül tek bir python dosyasıdır, paket ise python dosyalarını __init__.py
almak için bir paket olduğunu söylemek için adında bir (boş olabilir) dosya eşliğinde python dosyalarını içeren bir klasördür . Her iki durumda da, modüllerin .py
uzantılarına ihtiyacı vardır , ancak bunları içe aktarmadan yapılır (aşağıya bakınız).
Varsayılan olarak, Python içindeki modüllerini ve paketlerini arar $PYTHONPATH
.
$ PYTHONPATH’da neler olduğunu bulmak için, aşağıdaki kodu python (3) ile çalıştırın:
import sys
print(sys.path)
Bir dizin nasıl eklenir
Bazen
Bir python dosyası içinden, python uygulamanızın veya komut dosyanızın baş bölümüne aşağıdaki satırları ekleyerek ara sıra varsayılan yola yol (lar) ekleyebilirsiniz:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
Örneğin:
eğer bir klasörüm varsa: /home/myname/pythonfiles
ve module_1.py
o dizinde bulunan dosyayı almak istiyorum , bunu kodumun baş kısmına ekliyorum:
import sys
sys.path.insert(0, "/home/myname/pythonfiles")
Ve sadece dosyayı kullanarak içe aktarabilirim module_1.py
:
import module_1
Bir paket oluşturduğumda ve paketten modül (ler) almak istediğimde, içinde $PYTHONPATH
(boş olabilir) bir dosya eşliğinde, modülleri içeren bir klasör oluşturmam gerekiyor__init__.py
Örneğin:
Adlı bir paketi (klasör) den almak için my_package
de /home/myname/pythonfiles
eklemek /home/myname/pythonfiles
adresinden Müşteri yolunu $PYTHONPATH
örnek 1'de olduğu gibi, ve denir modülü almak module_2.py
basitçe ile (paket klasörün içinde): `
from <packagename> import module_2
$PYTHONPATH
Kalıcı olarak dizin ekleme :
Dosyana aşağıdaki satırı ekleyin ~/.profile
.
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
Alt Dizinler
Bir paket içinde, alt dizinler bu şekilde dahil edilmez; Dizinleri "zincirlemeniz" gerekir. Bir modülü almak için module_3.py
, klasörün subfolder
içindeki klasörün içine packagename
:
import packagename.subfolder.module_3
Paketteki tüm alt klasörlerin kendi __init__.py
dosyalarını içerdiği gerçeği göz önüne alındığında .
Bir modül, komut dosyası veya uygulama ile aynı dizinde olduğunda
Komut veya uygulama ile aynı dizinde olduğunda, bir modüle yol eklemek gerekmez, otomatik olarak eklenir.
Örnek:
İçinde script.py
ve var olan bir klasörüm varsa module.py
, modülü basitçe içe aktarabilirim:
import module
__init__.py
Klasöründe bir dosya var mı? python nasıl paketler yaratır ve modülleri o paketten almanıza izin verir. guide.python-distribute.org/creation.html