Bagaimana untuk memasang dan mengkonfigurasi perpustakaan pyinstaller Python

WBOY
Lepaskan: 2023-05-25 18:58:21
ke hadapan
2322 orang telah melayarinya

Ringkas

Modul pemasang python digunakan terutamanya untuk membungkus kod python ke dalam program exe untuk kegunaan terus, supaya ia boleh dijalankan pada komputer lain walaupun tiada persekitaran python.

Penggunaan

1 Pemasangan

pyinstaller ialah perpustakaan pihak ketiga, jadi ia perlu dipasang terlebih dahulu sebelum digunakan

pip install pyinstaller
Salin selepas log masuk

2 fail spec

1 Konfigurasikan folder program exe yang dihasilkan

(1) Jika anda tidak biasa dengan kandungan konfigurasi spec, anda boleh menjalankan arahan berikut dalam terminal untuk menjana templat tetap

pyinstaller --name myapp main.py  # myapp为生成的spec文件名称,main.py为打包的文件
Salin selepas log masuk

Selepas dijalankan, kita boleh melihat beberapa fail dan boleh memadamkan dist dan membina fail secara langsung. Saya melihat bahawa apabila saya membuka fail myapp.spec, saya dapat melihat maklumat konfigurasi.

Bagaimana untuk memasang dan mengkonfigurasi perpustakaan pyinstaller Python

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['main.py','hello.py'],  #注:要打包的模块,按照先后顺序运行
    pathex=['C:/Users/pythonProject'],  #注:要打包的Python源代码的路径列表。
    binaries=[], 
    datas=[],  #注:要打包的非Python资源(例如图像、配置文件等)列表。
    hiddenimports=[''requests],  #注:必需的隐藏导入列表,用于告诉PyInstaller找到其他未明确指定的依赖项。
    hookspath=[],  #注:一个路径列表,其中包含指定要自定义的钩子模块的目录。
    hooksconfig={},  #注:
    runtime_hooks=[],  #注:用于在应用程序运行时运行的Python代码文件列表。
    excludes=[],  #注:不包括在生成的可执行文件中的模块列表
    win_no_prefer_redirects=False,  #注:
    win_private_assemblies=False,
    cipher=block_cipher,  #注:用于加密Python字节码的密码。
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

#注:a.pure: 一个布尔值,指示是否生成纯Python字节码。如果为True,则PyInstaller将不包括任何二进制文件或库。
Salin selepas log masuk

a.zipped_data: Tuple yang mengandungi semua skrip dan sumber Python dalam mod OneFile.

exe = EXE(
    pyz,  #注:一个PYZ实例,其中包含要打包的所有Python脚本和资源。
    a.scripts,  #注:应用程序的主Python脚本列表。
    [],
    exclude_binaries=True,
    name='myapp',  #注:生成exe可执行文件的名称
    debug=False,  #注:一个布尔值,指示是否生成调试版本的可执行文件
    bootloader_ignore_signals=False,  #注:一个布尔值,指示是否忽略启动加载器的信号。
    strip=False,  #注:一个布尔值,指示是否对可执行文件进行符号剥离。
    upx=True,  #注:一个布尔值,指示是否使用UPX压缩可执行文件
    console=True,  #注:是否开启dos窗口
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
   icon:'图标.ico'  #注:用户生成exe文件的封面,后缀必须是ico格式,转换地址:https://convertio.co/zh/download/88c5806204642c8a1c10e65b1bef9b5886f6d8/
)
coll = COLLECT(
    exe,  #注:你的Python脚本生成的可执行文件路径(通常是与spec文件同名的文件)
    a.binaries,  #注:二进制对象列表,表示其他相关二进制文件的位置以及将它们复制到输出目录的相对路径。例如,如果您的应用程序需要音频或图像文件,则可以使用此参数将其包含在可执行文件中。
    a.zipfiles,  #注:压缩文件列表,表示应该从zip文件中提取哪些文件并将它们放入输出目录。这对于打包一些必需的库或数据文件非常有用。
    a.datas,  #注:数据文件列表,这些文件不应被压缩,但应该被复制到输出目录中。例如,这可能包括配置文件、模板文件或其他类型的文本文件。
    strip=False,  #注:是否从可执行文件和库中去除调试信息。默认情况下为True,这将减小文件大小,但会使得调试更加困难。
    upx=True,  #注:是否使用UPX来压缩可执行文件和库。默认情况下为False,因为UPX可能会导致某些文件无法正常工作。
    upx_exclude=[],  #注:
    name='myapp',  #注:打包文件夹名称。
)
Salin selepas log masuk

(3) Biasanya kita hanya perlu mengkonfigurasi modul yang perlu dibungkus + pathex + nama fail exe yang dijana + nama direktori di mana exe wujud Selepas konfigurasi, masukkan arahan terus di terminal untuk membungkus.

pyinstaller  myapp.spec
Salin selepas log masuk
Salin selepas log masuk

(4) Selepas pembungkusan selesai, anda boleh melihat fail dist dalam direktori di mana projek terletak Direktori di sebelah fail dist ialah folder pembungkusan, dan program terletak di bawah folder itu. Perlu diingatkan bahawa kerana kami membungkus keseluruhan folder, apabila berkongsi dengan orang lain, anda perlu menghantar keseluruhan folder untuk memastikan operasi yang betul.

Bagaimana untuk memasang dan mengkonfigurasi perpustakaan pyinstaller Python

(5) Konfigurasikan modul yang akan dibungkus. Jika terdapat sambungan import antara modul, anda boleh membungkus modul yang akhirnya dijalankan (pemasang py). akan secara lalai Import (.py + perpustakaan pihak ketiga) yang terlibat dalam utama semuanya dibungkus bersama. Jika dua modul py tidak mempunyai hubungan antara satu sama lain, berbilang modul boleh dibungkus pada masa ini.

2. Konfigurasikan untuk menjana fail exe bebas

(1) Langkah di sini adalah sama seperti di atas, mula-mula jana templat

pyinstaller -F main.py
Salin selepas log masuk

(2) Templat adalah tentang Gaya adalah seperti berikut, dan maksud medan adalah sama seperti di atas.

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='hello',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)
Salin selepas log masuk

(3) Selepas konfigurasi selesai, terminal menjalankan pembungkusan arahan Selepas pembungkusan selesai, anda akan melihat bahawa terdapat hanya satu fail exe dalam direktori dist.

pyinstaller  myapp.spec
Salin selepas log masuk
Salin selepas log masuk

Bagaimana untuk memasang dan mengkonfigurasi perpustakaan pyinstaller Python

Selain mengkonfigurasi fail spec, anda juga boleh membungkusnya terus melalui arahan pyinstaller. Saya tidak akan menerangkan lebih lanjut di sini

Atas ialah kandungan terperinci Bagaimana untuk memasang dan mengkonfigurasi perpustakaan pyinstaller Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan