【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)

Python项目打包发布汇总

【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)
【Python】Python项目打包发布(二)(基于Pyinstaller打包PyWebIO项目)
【Python】Python项目打包发布(三)(基于Aardio打包多目录项目)
【Python】Python项目打包发布(四)(基于Nuitka打包PySide6项目)
【Python】Python项目打包发布(五)(制作Windows安装包)

一、说明

先上官网:https://pyinstaller.org/en/stable/

pip install pyinstaller

可以使用命令行直接打包,也可以生成spec文件打包,还可以使用auto-py-to-exe打包。

1、命令行参数说明

 # 查看其参数说明
pyinstaller -h
参数说明
-F产生单个的可执行文件
-D产生一个目录(包含多个文件)作为可执行程序
-a不包含 Unicode 字符集支持
-ddebug 版本的可执行文件
-w指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c指定使用命令行窗口运行程序(仅对 Windows 有效)
-o指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

2、spec文件说明

  • 创建pyinstaller spec (specification) 文件:
pyi-makespec <options> app.py  
pyi-makespec --onefile app.py # 生产一个文件的话
pyi-makespec --key 123456 --onefile app.py  # 生产一个文件,以123456加密
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis([],	# 此列表存放项目设计的所有python脚本文件
             pathex=[], # 此列表为项目绝对路径
             binaries=[],
             datas=[],		# 此列表存放所有资源文件,每个文件是一个2元组元素
             hiddenimports=[],
             hookspath=[],
             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='setup',		# 打包程序的名字
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True,# 是否显示控制台
          icon=) # exe图标绝对路径,可选
          )	

3、auto-py-to-exe

官网:auto-py-to-exe中文文档

  • 安装
    pip install auto-py-to-exe
  • 运行
    打开控制台输入auto-py-to-exe即可
  • 界面
    如下
    在这里插入图片描述
  • 说明
    在这里插入图片描述

二、打包多文件,多目录项目

1、项目说明

本项目目录结构为:

- MyProject
	- In
	- Out
	- App
		- __init__.py
		- app.py
		- MainProgram
			- __init__.py
			- 1.py
			- 2.py
			- main.py

期望打包后的结构:

- MyProject
	- In
	- Out
	- App
		- App.exe

2、 打包流程

说明:建议使用python自带的venv,在本项目目录下生成环境依赖

  • 生成spec文件
cd App # 切换到打包程序目录
pyi-makespec app.py # 生成spec文件
  • 配置spec文件
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(['app.py','MainProgram/1.py','MainProgram/2.py','MainProgram/main.py'],
             pathex=['E:\Code\MyGit\CJRes\APP'], # 此列表为项目绝对路径
             binaries=[],
             datas=[],		# 此列表存放所有资源文件,每个文件是一个2元组元素
             hiddenimports=[],
             hookspath=[],
             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='app',		# 打包程序的名字
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True,
          icon='E:\Code\MyGit\CJRes\APP\logo.ico') # exe图标
  • 打包
pyinstaller -F app.spec
  • 等待…

3、补充说明

  • 使用单文件模式时,需在原代码内配置好输入输出与exe文件的相对路径。
    具体见:https://blog.csdn.net/qq_25262697/article/details/127991930

  • conda中pyinstaller指定python版本:
    在当前conda环境中,安装pyinstaller即可

  • venv环境下使用pyinstaller
    建议使用 -p参数,将venv\Lib\site-packages加入到打包路径中,即,

pyinstaller -p xxxx\venv\Lib\site-packages app.py

三、Pyinstaller支持WIN7

四、参考文献

Pyinstaller通过spec文件打包py程序(多个py脚本)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KmBase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值