[Gelistirici] PiSi'de "from module import X"
Barış Metin
baris at pardus.org.tr
19 Nis 2007 Per 00:19:33 EEST
Selam,
IRC toplantısında konuştuğumuz gibi buna hızlıca bir baktım. Önce toplantıda
bahsettiğim hacky yöntemi denedim fakat byte-compile işinin çok daha basit
bir yöntemini buldum :). Şöyle ki:
mymodule.py adında bir modülümüz olsun. İçeriği şu:
def karpuz():
print "round 1"
In [1]: from mymodule import karpuz
In [2]: karpuz()
round 1
Gidip mymodule.py'yi düzenleyelim. Yeni içerik:
def karpuz():
print "round 2"
In [3]: import sys
In [4]: reload(sys.modules[karpuz.__module__])
Out[4]: <module 'mymodule' from 'mymodule.py'>
In [5]: exec("from %s import karpuz" % karpuz.__module__)
In [6]: karpuz()
round 2
Faik, bu işimizi çözüyor mu? Görebildiğim kadarı ile başka yöntemleri de var
ama en basitçe uygulanabilecek bu. Bu işi otomatik yapabiliriz tabi, global
içerisinde __module__'ü farklı/istediğimiz olan tüm nesneleri bu şekilde
reload ettiririz...
PS: Reload işini PiSi dışarısında yapmak konusunu biliyorum, bu ilk "from
import" sorunumuz için bir öneri şimdilik...
PS2: Daha önce konuşulan ve Çağlar'ın da toplantıda bahsettiği reload'un bir
wrapper tarafından yapılması fikri sıcak gelmemeye başladı. RPM bunu bir
wrapper ile çözüyor ama Python gibi bir dil kullanmıyor :).
iyi çalışmalar,
--
Barış Metin
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi