Mengapa PyInstaller Melemparkan 'ImportError: Tiada modul bernama 'blah'' dan Bagaimana Saya Membetulkannya?

Barbara Streisand
Lepaskan: 2024-11-14 19:36:02
asal
109 orang telah melayarinya

Why Is PyInstaller Throwing

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'])
Salin selepas log masuk

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:

  1. Tambah Import Eksplisit: Anda boleh menambah import yang tidak digunakan bagi modul yang hilang pada kod Python anda. Ini memaksa PyInstaller untuk memasukkannya ke dalam boleh laku anda.
  2. Gunakan Pilihan '--hidden-import': Pilihan '--hidden-import' membolehkan anda mengarahkan PyInstaller untuk memasukkan modul tertentu yang mungkin tidak diisytiharkan secara eksplisit dalam kod anda. Sebagai contoh, anda boleh menggunakan arahan berikut:
python pyinstaller --hidden-import mysql.connector --onefile myscript.py
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan