Nasıl Python ile göreli ithalat yapmak?
Bu dizin yapısını düşünün:
app/
__init__.py
sub1/
__init__.py
mod1.py
sub2/
__init__.py
mod2.py
mod1
, kodlama yapıyorum ve mod2
yerden bir şey almak istiyorum. Nasıl yapmalıyım?
Ama alacağım from ..sub2 import mod2
denedim bir "non-paket göreli ithalat Teşebbüs".
Etrafta araştırdım ama "sys.path
manipülasyon" kesmek. sadece buldum Orada temiz bir yol değil mi?
Edit: __init__.py
hepsi benim'şu anda boş
Edit2: sub2 alt paketleri arasında paylaşılan sınıfları (sub1
, subX
, vb.) içerir. çünkü bunu yapmak için çalışıyorum
Edit3: arıyorum davranışları PEP 366 (teşekkürler, John B) açıklanan aynıdır
CEVAP
Herkes yapmak yerine sadece soruya cevap ver ne söylemek istiyor gibi görünüyor.
Sorun '____ ana' tercüman için bir argüman olarak mod1.py geçirerek. modülü çalıştırdığınız.
Göreli ithalat ____ paket hiyerarşisinde bu modülün konumunu belirlemek için öznitelik adı bir modül kullanın. Eğer modülün adı içermiyor herhangi bir paket bilgileri (örneğin seti '__main__') göreli ithalat çözülmüş gibi modül bir üst düzey modülü bakılmaksızın modülü aslında yer alan dosya sistemi.
Python başvuru modüller ana modül göreli yeteneği ekliyorlar 2.6,. PEP 366 değişimi açıklar.
GüncellemeNick Coghlan göre, önerilen alternatif paket-m anahtarı kullanarak içeri modülünü çalıştırmak için.
Nasıl Python betiği tek başına HERHANG...
Nasıl Python değişmez bir nesne yapmak...
Nasıl pip-yüklenebilir yapmak için bir...
Python 3'te göreli ithalat...
Nasıl python yorumlayıcısı yapmak doğr...