| |
|
开发:
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 -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之前,我需要导入配置文件,语句是这样的
这个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文件夹下相应的依赖包拷贝到项目打包后的文件夹里即可。 ? ? 补充文件夹? 至此,这个项目的打包已完成。因为不是专业搞网站开发,都是遇到问题解决问题。我想,对于这样的项目打包,可能是有更好的方案,希望大佬多多指教。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |