2010-11-02 13 views
5

Yeni başlayanlar soru. Ipython kabuğuma başladım ve run-komutuyla komut dosyaları çalıştırıyorum ve her şey harika çalışıyor. Ancak bir komut dosyası dosyasını çalıştırdıktan sonra içe aktarılmış bir komut dosyasını düzenleyip tekrar çalıştırmayı denemek, eski içe aktarılan dosyanın çalışmasına neden olur. Bu yüzden python'un hız için bir çeşit önbellek tasarrufu sağladığını tahmin ediyorum. Net bir emir denedim ve böyle bir işe yaramazdım.Python kabuğunda yürütülen bir komut dosyasını içe aktardıktan sonra nasıl güncellerim?

Temelde benim problemim bu. İki dosya: function.py ve program.py. Program dosyası işlevi alır. Ancak, programı çalıştırıp işlevi yeniden düzenlemek ve ardından programı yeniden çalıştırmak, eski işlevlerin/düzenlenmemiş sürümün çalışmasına neden olur.

+0

Neden "program.py" komut satırından çalışmıyorsunuz? –

cevap

8

iPython'un veya standart Python yorumlayıcısının içinde, içe aktarılan bir modülü yeniden yüklemek için reload() işlevini kullanabilirsiniz.

Örnek:

In [1]: import foo 
    # make some changes to the foo.py 
In [2]: reload(foo) 
+0

Yani komut dosyasında içe aktarma komutundan sonra bir yeniden yükleme eklemek aslında hile yapar! Yine de bir çeşit sifon komutuyla iyi olur. –

0

here numaralı dosyada, dosyanın her seferinde diskten yeniden okunduğu belirtiliyor, hatanın yanınızda olmadığından emin misiniz?

+0

Evet benim hatam. Çalıştığım komut dosyası güncelleştirildi, ancak çalıştırdığım komut dosyası dosyasında içe aktarılan komut dosyasını değil. –

1

Kullanım Python's reload işlev modülü kodunu yeniden derlemek ve tüm modül düzeyi kodunu reexecute için - Aksi Python yorumlayıcısı bayat derlenmiş bayt kodu kullanacaktır (.pyc). Örnek:

In [1]: import script 

In [2]: run script 
... 

In [3]: reload(script) 
Out[3]: <module 'script' from 'script.pyc'> 
... 
In [4]: run script 
İlgili konular