当前位置:   article > 正文

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

python项目打包部署

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
  • 1

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

1、命令行参数说明

 # 查看其参数说明
pyinstaller -h
  • 1
  • 2
参数说明
-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加密
  • 1
  • 2
  • 3
# -*- 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图标绝对路径,可选
          )	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

期望打包后的结构:

- MyProject
	- In
	- Out
	- App
		- App.exe
  • 1
  • 2
  • 3
  • 4
  • 5

2、 打包流程

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

  • 生成spec文件
cd App # 切换到打包程序目录
pyi-makespec app.py # 生成spec文件
  • 1
  • 2
  • 配置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图标
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 打包
pyinstaller -F app.spec
  • 1
  • 等待…

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
  • 1

三、Pyinstaller支持WIN7

四、参考文献

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/766244
推荐阅读
相关标签
  

闽ICP备14008679号