Mengapa saya mendapat ralat 'Tiada modul bernama' apabila menggunakan pilihan --onefile PyInstaller?

Linda Hamilton
Lepaskan: 2024-11-18 04:13:02
asal
705 orang telah melayarinya

Why am I getting

PyInstaller, Fail Spec, Tiada Modul Dinamakan

Pengenalan

Apabila membina skrip Python dengan PyInstaller, anda mungkin menemui mesej ralat "Tiada modul dinamakan." Ralat ini menunjukkan bahawa modul yang diperlukan tidak disertakan dalam boleh laku anda.

Isu

Dalam kes tertentu ini, ralat berlaku apabila menggunakan pilihan --onefile untuk buat satu fail boleh laku. Fail myscript.spec yang dijana oleh PyInstaller tidak termasuk semua modul yang diperlukan, mengakibatkan ralat "Tiada modul dinamakan".

Penyelesaian

Pilihan 1: Import Dinamik

Jika kod anda mengandungi import dinamik (iaitu, modul yang diimport pada masa jalan), PyInstaller mungkin tidak dapat memasukkannya secara automatik. Untuk memastikan modul ini disertakan, anda boleh menambah import yang tidak digunakan daripadanya dalam kod anda:

import mysql  # Unused import
import urllib2  # Unused import
Salin selepas log masuk

Pilihan 2: Sertakan Eksplisit

Jika anda memilih untuk tidak tambah import yang tidak digunakan, anda boleh mengarahkan PyInstaller untuk memasukkan modul yang diperlukan secara eksplisit. Dalam fail myscript.spec anda, tambahkan baris berikut dalam bahagian Analisis:

binaries = [('mysql.so', '.') ...]  # Include the MySQL library
Salin selepas log masuk

Ulang langkah ini untuk mana-mana modul lain yang hilang.

Nota pada --onefile

Pilihan --onefile tidak mempunyai sebarang kesan pada kefungsian boleh laku anda. Ia hanya membungkus semua fail perantaraan yang dibuat oleh PyInstaller ke dalam fail boleh laku, yang kemudiannya dibongkar ke direktori sementara apabila boleh laku dijalankan.

Atas ialah kandungan terperinci Mengapa saya mendapat ralat 'Tiada modul bernama' apabila menggunakan pilihan --onefile PyInstaller?. 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