Saya mencoba memuat ulang modul yang sudah saya impor di Python 3. Saya tahu Anda hanya perlu mengimpor sekali dan menjalankan import
perintah lagi tidak akan melakukan apa-apa.
Eksekusi reload(foo)
memberikan kesalahan ini:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
...
NameError: name 'reload' is not defined
Apa artinya kesalahan itu?
python
python-3.x
Harga Lonnie
sumber
sumber
reload
menjadi skrip memang sangat jarang, dan mereka yang menggunakan seni gelap semacam itu tidak mungkin membaca komentar ini. Namun, jika Anda sedang mengembangkan modul dan menggunakan konsol IPython untuk mengujinya secara interaktif, makareload
bisa berguna dalam alur kerja itu. Seperti yang dikatakan @Evan, hati-hati terhadap efek samping waktu impor. Secara umum, saya akan mengatakan untuk menghindarireload
modul orang lain.reload
Anda sendiri masuk akal selama waktu desain.Untuk> = Python3.4:
Untuk <= Python3.3:
Untuk Python2.x:
Gunakan
reload()
fungsi bawaan .sumber
sumber
importlib
saja.Untuk memperluas jawaban yang ditulis sebelumnya, jika Anda menginginkan solusi tunggal yang akan bekerja di seluruh versi Python 2 dan 3, Anda dapat menggunakan yang berikut:
sumber
Saya sarankan menggunakan cuplikan berikut ini karena berfungsi di semua versi python (membutuhkan
six
):sumber
Untuk kompatibilitas python2 dan python3, Anda dapat menggunakan:
sumber
Jika Anda tidak ingin menggunakan lib eksternal, maka salah satu solusinya adalah membuat ulang metode reload dari python 2 untuk python 3 seperti di bawah ini. Gunakan ini di bagian atas modul (mengasumsikan python 3.4+).
Reload BTW sangat diperlukan jika Anda menggunakan file python sebagai file konfigurasi dan ingin menghindari restart aplikasi .....
sumber