【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 字符集支持
-d debug 版本的可执行文件
-w 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

2、spec文件说明

  • 创建pyinstaller spec (specification) 文件:
pyi-makespec  app.py  
pyi-makespec --onefile app.py # 生产一个文件的话
pyi-makespec --key 123456 --onefile app.py  # 生产一个文件,以123456加密
  • spec文件内容
    官方说明:https://pyinstaller.org/en/stable/spec-files.html
    示例及部分参数说明:
# -*- 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即可
  • 界面
    如下
    【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)_第1张图片
  • 说明
    【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)_第2张图片

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

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即可

三、Pyinstaller支持WIN7

  • 使用Python3.6
  • numpy使用vanilla版本,下载链接

四、参考文献

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

你可能感兴趣的:(#,Python,面向百度编程,python,开发语言,windows)