Python项目打包发布汇总

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

一、说明

先上官网: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 <options> 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即可
  • 界面
    如下
  • 说明

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

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 = Nonea = 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项目打包发布(一)(基于Pyinstaller打包多目录项目)相关推荐

  1. Py打包应用程序(zipapp打包.pyz文件、pyinstaller打包exe文件)

    ''' Py打包应用程序.py (zipapp打包.pyz文件.pyinstaller打包exe文件)注意: 一.zipapp模块 打包档案包 的 命令行语法: python -m zipapp so ...

  2. 【项目】基于SaaS的餐掌柜项目实战 阶段一 基于SaaS的餐掌柜项目实战 第1章 基础架构搭建 1 餐掌柜需求分析

    [项目]基于SaaS的餐掌柜项目实战 文章目录 [项目]基于SaaS的餐掌柜项目实战 阶段一 基于SaaS的餐掌柜项目实战 第1章 基础架构搭建 1 餐掌柜需求分析 1.1 餐饮行业分析 1.2 餐饮 ...

  3. python打包发布到手机_Python打包操作与在线发布

    打包操作: 1.安装打包工具 2.在包文件中,添加构建模块 setup.py 在构建模块中,添加项目描述信息 from distutils.core import setup setup( name= ...

  4. linux安装python库报错pywin32_完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误...

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for ass ...

  5. python打包总出错,解决Pyinstaller打包软件失败的一个坑

    最近写了一个软件屡屡打包不能正常运行,而直接在cmd命令行窗口运行却都能正常输出,没有任何报错,一开始怀疑程序里面sys.args[1]使用不对,找了很久发现import numpy才是导致代码不能打 ...

  6. Jenkins+Gitlab+Nginx+SonarQube+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)

    环境拓扑:  Jenkins -192.168.1.30  Gitlab -192.168.1.31  LB -192.168.1.32  Web1 -192.168.1.33  Web2 -192. ...

  7. Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)

    实现流程: 手动部署Java项目至后端Web集群 1.搭建Nginx+Tomcat集群架构. 2.开发提交Java源代码至Gitlab仓库. 3.手动获取Java源代码,然后使用Maven进行编译. ...

  8. 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)

    前言 最近面试好像也经常问到一个问题: 你们项目是怎么发布的 传统的Java项目都是本地打包成 jar包 或者 war包, 上传到服务器, 然后通过shell脚本的方式启动的 要求我们具备一定的she ...

  9. 超详细Pyinstaller打包exe+反编译Pyinstaller打包的exe教程+防止反编译教程

    在这里分享一些技巧和经验给大家.辛苦撰文分享,转载或引用请保留本文作者信息及文章链接. 作者的环境: win7+python3.5(anaconda3) 理论上,win7及以上的系统和python任意 ...

最新文章

  1. 修改wireshark协议解析规则
  2. linux贪吃蛇c程序,Linux环境下C语言实现贪吃蛇游戏
  3. LeetCode 1878. 矩阵中最大的三个菱形和(模拟)
  4. 采用Eclipse中间Maven构建Web项目错误(一)
  5. 雪亮工程整体解决方案
  6. css中 div圆角边框样式,DIV+CSS圆角边框 - 前端LOVER - 博客园
  7. 项目Kick Off 我们应该做什么?
  8. Java单元测试之JUnit 5快速上手
  9. python导入siri_python利用不到一百行代码实现一个小siri
  10. OJ刷题 |超大目标值(1亿)求质数个数问题
  11. 人脸识别(4)---人脸识别行业分析报告
  12. 效率倍增!4 个鲜为人知却功能强大的魔法命令!
  13. mysql数据库的配置
  14. win7 引导 ubuntu
  15. 去广告插件——火狐浏览器
  16. 安装oracle11g数据库问题,linux 6.3安装Oracle11.2 R2数据库问题汇总
  17. 呼吸机的工作原理及其主要功能
  18. 重庆邮电大学计算机科学与技术调剂,重庆邮电大学接收硕士生预调剂
  19. 循环赛日程表 (递归与分治)
  20. 八度音阶和频率的关系

热门文章

  1. T13735 fateice-string洛谷八连测2
  2. linux使用matlab
  3. SDN是什么,和SD-WAN有什么关系
  4. win10家庭版不能加入域网络
  5. 转JavaScript的语法解析与抽象语法树
  6. 【批处理DOS-CMD命令-汇总和小结】-显示文本文件内容(type),对文本文件的整行字符串进行排序(sort)
  7. signature=cfd49330e04062ab770d7ddb4cfcf23a,Przed pierwszym rozbiorem Polski
  8. geoserver SLD 面状图斑填充样式
  9. vsftpd的配置详解
  10. 智能门铃中可视对讲的回音消除