使用pyinstaller将python代码打包成exe文件
2023-12-15 04:47:57
首先使用pyinstaller生成spec文件,然后配置spec文件重新打包
pyinstaller -D app.py
pyinstaller参数
-F :打包单个文件
-D :打包多个文件,在dist中生成很多依赖文件
-c:使用控制台执行,只对windows有效
-n : 生成spec文件的名字和exe名字
-p : 设置导入路径
-key : 用于加密python字节码的密钥
--add-data? 可以将一些非二进制文件添加到exe打包
--dispath? :指定打包后程序的存放目录
--workpath? :输出所有临时文件存放目录,默认存放在build目录
# -*- mode: python ; coding: utf-8 -*-
block_cipher=None
py_files=['game.py'] #所有的python脚本文件
add_files=[
('resources\\fonts\\MONACO.TTF','resources\\fonts'),
('resources\\images\\game_over.gif','resources\\images')
]
a = Analysis(
py_files, #此列表存放项目设计所有python脚本文件
pathex=['E:\Desktop\Games-master\Tetris'],#此列表为项目绝对路径
binaries=[],
datas=add_files, #此列表存放所有资源文件,每个文件都是一个二元组元素
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='game',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='game',
)
spec配置说明
a: Analysis类的实例,传入各种脚本来分析程序的导入和依赖。a中的内容包括四部分:scripts,python脚本;pure,程序代码文件中的纯Python模块;binaries,程序代码文件中需要的非python模块;datas,非二进制文件
pyz:? 包含所有的python模块
exe:用来生成最后的exe可执行程序
coll:? COLLECT类的实例,用于创建输出目录。-F模式下,没有COLLECT,所有的脚本、模块
二进制文件都包含在最终生成的exe文件中
block_cipher: 加密密钥
Analysis参数说明:
- scripts:一个包含要打包的 Python 脚本文件路径的列表。这些脚本文件将被分析并打包到最终的可执行文件中。
- pathex:一个包含要搜索脚本文件的路径列表。PyInstaller 将在这些路径中查找脚本文件及其依赖项。
- binaries:一个包含要包含在可执行文件中的二进制文件路径的列表。这些二进制文件可以是共享库、插件或其他依赖项。
- datas:一个包含要包含在可执行文件中的非 Python 文件路径的列表。这些文件可以是数据文件、配置文件或其他资源文件。
- hiddenimports:一个包含要隐式导入的模块名列表。这些模块可能不会被 PyInstaller 自动检测到,但它们对于程序的正常运行可能是必需的。
- hookspath:一个包含自定义钩子脚本路径的列表。钩子脚本用于处理特定的包或模块,以便正确地打包它们。
- runtime_hooks:一个包含运行时钩子路径的列表。运行时钩子用于在程序运行时执行特定的操作,例如加载插件或初始化资源。
- excludes:一个包含要从打包过程中排除的模块名列表。这些模块将不会被包含在最终的可执行文件中。
- win_no_prefer_redirects:一个布尔值,指示是否避免使用 Windows 文件重定向。如果设置为 True,则 PyInstaller 将尝试直接访问文件而不是通过重定向来访问它们。
- win_private_assemblies:一个布尔值,指示是否将程序集作为私有副本包含在可执行文件中。如果设置为 True,则每个可执行文件都将包含其依赖项的一个私有副本,以避免与其他程序的冲突。
- cipher:一个用于加密 Python 字节码的密钥。如果提供了密钥,则 PyInstaller 将使用它来加密打包的 Python 脚本,以增加安全性。
- noarchive:一个布尔值,指示是否将 Python 字节码嵌入到可执行文件中。如果设置为 False,则 PyInstaller 将创建一个单独的存档文件来存储字节码,并在运行时加载它。这可以减少可执行文件的大小,但会增加启动时间。
参考:
pyinstaller系列之七:打包各种问题汇总_pyinstaller hidden import not found-CSDN博客
【python第三方库】pyinstaller使用教程及spec资源文件介绍_--hidden-import-CSDN博客
文章来源:https://blog.csdn.net/qq_40107571/article/details/135005102
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!