Ralat Import Fail Spesifikasi PyInstaller: Menyelesaikan "Tiada modul bernama"
Apabila cuba membina skrip Python menggunakan PyInstaller, anda mungkin menghadapi ralat "ImportError: Tiada modul bernama 'bla'". Isu ini timbul apabila PyInstaller gagal memasukkan semua modul yang diperlukan dalam boleh laku anda.
Konfigurasi Fail Spesifikasi
Fail spesifikasi yang anda hasilkan termasuk analisis berikut:
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'icinga.py'], pathex=['/home/user/projects/icinga_python/releases/v2.1'])
Analisis ini mengenal pasti fail Python untuk disertakan dalam boleh laku anda. Walau bagaimanapun, ia nampaknya tidak menyertakan sebarang modul daripada pakej pihak ketiga, seperti modul 'mysql' atau 'urllib2'.
Import Dinamik
Jika anda Skrip Python mengimport modul secara dinamik, seperti menggunakan modul 'importlib', PyInstaller mungkin gagal memasukkannya dalam boleh laku anda. Ini kerana import dinamik tidak diisytiharkan secara eksplisit dalam kod anda.
Menyelesaikan Ralat
Untuk menyelesaikan ralat ini, anda mempunyai dua pilihan:
python pyinstaller --hidden-import mysql.connector --onefile myscript.py
Arahan ini akan mengarahkan PyInstaller untuk memasukkan modul 'mysql.connector' dalam boleh laku anda, walaupun ia tidak diimport secara eksplisit dalam kod anda .
Nota tentang --onefile Option
Pilihan '--onefile' tidak secara langsung menjejaskan kemasukan modul dalam boleh laku anda. Ia hanya membungkus semua fail yang dijana PyInstaller ke dalam satu fail boleh laku.
Atas ialah kandungan terperinci Mengapa PyInstaller Melemparkan 'ImportError: Tiada modul bernama 'blah'' dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!