栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pyinstaller python文件打包工具使用总结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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文件夹下相应的依赖包拷贝到项目打包后的文件夹里即可。

    补充文件夹 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号