IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Pyinstaller python文件打包工具使用总结 -> 正文阅读

[Python知识库]Pyinstaller python文件打包工具使用总结

Pyinstaller是python文件打包成可执行文件exe最常用的工具之一。一般情况下,使用十分方便。

pyinstaller -F xx.py 即可完成xx文件的打包。只是在实际使用中,根据不同的项目依赖和需求,会有一些不同的操作。

1、常用打包参数

pyinstaller常用打包参数
参数解释
-D, --onedir打包成一个文件夹
-F, --onefile打包成一个可执行文件(exe)
-n NAME, --name NAME指定打包后文件的名字,默认主py文件的名字
--add-data添加其他依赖资源
-w, --windowed针对windows和MacOS,运行时不出现console窗口
-i指定图标文件

要获得所有参数及解释,运行pyinstaller -h

?

-D 打包成一个文件夹,其效果和你安装的一般软件差不多。包含一个入口文件xx.exe和一些列依赖。

? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ?打包成一个文件夹? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 打包成一个文件

?-F 就是整体打包成一个文件,也就是说,你得到的就是一个xx.exe。这两种方式比较直观的差异就是:打包成文件夹,其所占内存空间会更大,但执行速度会稍快一点。

-n 就是给你打包后的文件或文件夹取名字,默认就是py文件的名字xx。这个感觉不重要,你完全可以打包完后重命名。

-w 就是运行时,不会出现控制台窗口。好处就是不会显得很low(双击弹出一个黑框),缺点就是你的一些print打印和报错信息无法查看。(也不是绝对的,可以单独开启一个窗口,然后去运行exe,这样总会出现窗口)

-i 是指定xx.exe的图标文件,不指定时会有默认图标。

--add-data 指定其他依赖资源。打包,实际上就是编译,所有的python代码都会被处理,包括import语句。但如果你的项目包含一些非py文件或py文件并不是通过import引入,那这些文件将会被忽略。此时,就可以通过这个参数指定。

这个情况将在下文更详细展开

2、flask+pyecharts项目使用pyinstaller打包

这个组合并不是说有多常见,而是足够有代表性。可能会遇到的问题如下

比如,在创建app之前,我需要导入配置文件,语句是这样的

app = Flask(__name__)
# 加载配置文件
app.config.from_object('app.setting')

这个setting.py文件并不是通过import语句导入的,因此如果直接打包,运行会提示找不到这个文件。而pyecharts或者说你的项目依赖很多前端的模板、脚本、样式等文件。这些文件也会被pyecharts忽略。直接打包运行同样会报错。

在我无数次打包失败的基础上,我将这个类型的项目如何打包含泪总结如下:

? ? ? ? ? 项目的整体结构

(1)不要使用conda创建的虚拟环境,直接使用原生python。(我也尝试过使用"python -m venv name"语句创建的虚拟环境,可行)

(2)安装好需要的依赖,pip install aa,bb

(3)选择打包成一个文件夹,方便后面补充依赖,pyinstaller -D xx.py -i abc.ico

?(4)原app目录里的py文件(配置文件除外)都已被打包,但却没有app这个文件夹。手动创建,并根据原项目的结构,补充前端文件和配置文件。其他需要的文件夹类似。(通过时间也可以看出,app和data等文件夹是后创建的)

? app文件夹内添加

?(5)此时,如果你运行程序,发现仍会提示找不到某某文件。别着急,缺什么补什么。针对这个项目,会缺少pymysql(没有导入语句),pyecharts,numpy的部分文件(直接全部替换)。将python环境中site-packages文件夹下相应的依赖包拷贝到项目打包后的文件夹里即可。

? ? 补充文件夹?

至此,这个项目的打包已完成。因为不是专业搞网站开发,都是遇到问题解决问题。我想,对于这样的项目打包,可能是有更好的方案,希望大佬多多指教。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:25:00  更:2022-02-28 15:27:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:45:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码