从python源码到可自动更新软件

相关阅读

标题 链接
如何打包python程序为exe bczl
【auto-py-to-exe 可视化打包python到exe】 51CTO ZATA

1. python源码

打包时需要特别注意的源码编写规范

除了基本的 Python 编码规范之外,在准备程序进行打包时,还需要特别注意以下几点:

1.1 依赖管理

  • 确保 requirements.txt 文件中列出了程序所有的依赖库
  • 检查依赖库的版本兼容性,避免打包后出现兼容性问题
  • 尽可能使用 pip freeze > requirements.txt 自动生成依赖列表

1.2 动态导入处理

  • 程序中如果使用了动态导入,需要确保 PyInstaller 能够正确识别并打包
  • 可以使用 PyInstaller --hiddenimport 选项手动指定隐藏依赖

1.3 平台兼容性

  • 如果程序需要跨平台运行,需要确保代码本身具有良好的跨平台兼容性
  • 针对不同平台,可能需要使用条件编译或运行时检测来适配

1.4 文件路径处理

  • 程序中涉及文件读写操作时,需要注意处理相对路径和绝对路径
  • 打包后的程序文件结构可能与开发环境不同,需要适当调整路径

1.5 图形界面兼容性

  • 如果程序有图形界面,需要确保界面组件在打包后能正常工作
  • 可能需要额外打包一些 GUI 库的依赖项

1.6 第三方库限制

  • 某些第三方库可能不支持 PyInstaller 打包,需要提前了解并做好替代方案
  • 对于不支持的库,可以考虑使用纯 Python 实现或寻找替代方案

1.7 运行时环境

  • 确保程序在打包后的运行环境下能正常工作,例如环境变量、系统依赖等

目录结构

典型的目录结构

project_name/

├── src/

│ ├── init .py

│ └── main.py

├── tests/

│ ├── init .py

│ └── test_main.py

├── resources/

│ ├── config.ini

│ └── images/

├── requirements.txt

├── setup.py

└── README.md

文件地址如何引用

如果项目中使用到了文件

相对导入

在同一个包内部,可以使用相对导入的方式引用其他模块。

pythonCopyfrom . import some_module

from .subpackage import another_module

绝对导入

跨包引用时,需要使用绝对导入的方式。

pythonCopyfrom project_name.modules import some_module

from project_name.subpackage import another_module

注意事项

避免循环导入问题,可以使用 main 进行条件导入。

保持导入语句的位置在文件顶部。

优先使用绝对导入,相对导入仅在同一包内部使用。

2. 源码打包成exe --- pyinstaller库

打包成一个文件

bash 复制代码
pyinstaller  -F  main.py

打包成多个文件(软件启动速度会快点)

bash 复制代码
pyinstaller -D main.py

使用配置文件.spec打包

your_project.spec a = Analysis(['main.py'], ...

bash 复制代码
pyinstaller your_project.spec

3. exe打包成安装程序 --- 以Inno为例

所需文件-安装inno

首先下载以下两个文件

  1. 下载地址:https://jrsoftware.org/isdl.php
  2. 中文包地址:https://jrsoftware.org/files/istrans/ (找到中文之后点击download会跳转到一个网页,点击另存为就可以,把后缀名修改一下)
  3. 安装inno 安装好了这样

使用inno界面打包exe为安装包

参考:【使用inno制作安装包】Bilibili

  1. 新建
  2. 安装介绍去安装就好了,但是要非常主要这一步
    如果你想把相关文件放到根目录,即使你选的是文件夹,也要再次进行如下的设置
相关推荐
涛啊涛26 分钟前
Centos7非LVM根分区容量不足后扩容,对调硬盘挂载/
linux·磁盘管理
这里有鱼汤34 分钟前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook10 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室10 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三12 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试
用户25191624271115 小时前
Python之语言特点
python
刘立军15 小时前
使用pyHugeGraph查询HugeGraph图数据
python·graphql
数据智能老司机19 小时前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
CYRUS_STUDIO20 小时前
用 Frida 控制 Android 线程:kill 命令、挂起与恢复全解析
android·linux·逆向
数据智能老司机20 小时前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构