Nasıl (yeniden) Python bir modülü kaldırmak mı?
Uzun süren bir Python sunucu ve sunucuyu yeniden başlatmadan bir hizmet yükseltmek mümkün olmak istiyorum. En iyi yolu bu ne işe yarıyor?
if foo.py has changed:
unimport foo <-- How do I do this?
import foo
myfoo = foo.Foo()
CEVAP
Zaten reload yerleşik işlevini kullanarak alınmış bir modülü yeniden:
import foo
while True:
# Do some things.
if is_changed(foo):
foo = reload(foo)
İstediğinin bu olduğunu düşünüyorum. Django geliştirme sunucusu gibi Web sunucular sunucu işlemi kendisi yeniden başlatmadan kod değişikliklerin etkisini görmek için bu kullanın.
Doktorlar alıntı için:
Python modülleri’ kod derlenir ve modül düzeyi kodu reexecuted, hangi nesneleri yeni bir dizi tanımlama modülün içinde adlarına bağlı sözlük. Init fonksiyonu uzatma modülleri bir çağrılmaz ikinci kez. Diğer tüm nesneler gibi Python eski nesneleri sadece başvuru sayılarına sonra iadesi sıfıra indir. Modül isimleri ad herhangi bir işaret için güncellendi yeni veya değiştirilmiş nesneler. Diğer eski nesnelere başvurular (gibi adları modülü için harici) rebound yeni nesneleri başvurmak ve güncelleştirilmesi gereken her ad eğer bunların gerçekleştiği, bu arzu edilir.
Eğer söz konusu belirtildiği gibi, Eğer Foo
sınıfı foo
modülü bulunuyorsa Foo
nesneleri yeniden oluşturmak gerekecek.
Nasıl Python dizin tarafından bir list...
Nasıl Python ederken bir listesi düzen...
Nasıl Python modülü kaynaklarının yeri...
Nasıl yeniden alma Python Yorumlayıcıs...
Nasıl R yeniden başlatmadan bir paketi...