当前位置: 首页> 房产> 建材 > python打包

python打包

时间:2025/9/12 20:25:35来源:https://blog.csdn.net/lyq308152569/article/details/141467264 浏览次数:0次

pyinstaller

  • 安装

      /******************安装命令********************/pip install pyinstaller 
    
  • 验证安装情况

      pip list/*************输出****************/pyinstaller               6.2.0pyinstaller-hooks-contrib 2023.10
    
  • 生成 spec文件

      pyinstaller xx.py
    
  • spec注释说明

      a = Analysis(['python_to_exe.py'],       pathex=[],                    binaries=[],                datas=[],                   hiddenimports=[],           hookspath=[],               hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,)pyz = PYZ(a.pure)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='python_to_exe',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='python_to_exe',)
    
变量含义
aAnalysis类的实例,要求传入各种脚本用于分析程序的导入和依赖。
pyzPYZ的实例,是一个.pyz文件,包含了所有pure中的所有Python模块。
exeEXE类的实例,这个类是用来处理Analysis和PYZ的结果的,也是用来生成最后的exe可执行程序。
collCOLLECT类的实例,用于创建输出目录。在-F模式下,是没有COLLECT实例的,并且所有的脚本、模块和二进制文件都包含在了最终生成的exe文件中。
block_cipher加密密钥
Analysis参数变量含义
scripts它是一个脚本列表,可以传入多个py脚本
pathex默认spec的目录.
datas将本地文件打包时拷贝到目标路径下。datas是一个元素为元组的列表,每个元组有两个元素,都必须是字符串类型,元组的第一个元素为数据文件或文件夹,元组的第二个元素为运行时这些文件或文件夹的位置。例如:datas=[(’./src/a.txt’, ‘./dst’)],。
binaries添加二进制文件,也是一个列表,定义方式与datas参数一样
hiddenimports指定脚本中需要隐式导入的模块,比如在__import__、imp.find_module()、exec、eval等语句中导入的模块,这些模块PyInstaller是找不到的,需要手动指定导入,这个选项可以使用多次
hookspath指定额外hook文件(可以是py文件)的查找路径,这些文件的作用是在PyInstaller运行时改变一些Python或者其他库原有的函数或者变量的执行逻辑(并不会改变这些库本身的代码),以便能顺利的打包完成
runtime_hooks指定自定义的运行时hook文件路径(可以是py文件),在打好包的exe程序中,在运行这个exe程序时,指定的hook文件会在所有代码和模块之前运行,包括main文件,以满足一些运行环境的特殊要求
excludes指定可以被忽略的可选的模块或包,因为某些模块只是PyInstaller根据自身的逻辑去查找的,这些模块对于exe程序本身并没有用到
exe参数变量含义
console设置是否显示命令行窗口
icon设置程序图标,默认spec是没有的,需要手动添加,参数值就是图片路径的字符串

打包

资源路径

当有使用到资源文件时这个时候需要特别注意,由于资源文件需要拷贝到打包文件中,其路径层级就会发生变化,这个时候还使用 sys模块获取到的路径就会在打包后出现异常,因此可以通过以下这段代码获取获取整个软件的root目录,在以此目录为根目录层级查找资源文件。

def root(self):if getattr(sys, 'frozen', False):current_dir = sys._MEIPASSelse:current_dir = os.path.dirname(os.path.abspath(__file__))file_path = os.path.join(current_dir, ".")return file_path

资源打包示例

#指定打包文件
file =  ['python_to_exe.py'],
#资源路径
#./resouce   即当前软件路径下的 resouce
#resouce     即打包后资源文件夹拷贝的路径
add_file=[('./resouce','resouce')]a = Analysis(file,                       //指定打包文件列表pathex=['./'],              //指定打包路径        binaries=[],datas=add_file,             //指定资源文件列表hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,
)
pyz = PYZ(a.pure)exe = EXE(pyz,a.scripts,a.binaries,a.datas,[],name='python_to_exe',               # 打包exe输出名称debug=False,bootloader_ignore_signals=False,strip=False,upx=True,upx_exclude=[],runtime_tmpdir=None,console=False,                      #关闭控制台输出disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,icon='./idget.ico'                  #程序图标
)

图形化的配置pyinstaller进行打包的工具: auto-py-to-exe

pip install auto-py-to-exe
# 启动工具
auto-py-to-exe
关键字:python打包

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: