python 利用Pyinstaller打包Web项目


Posted in Python onOctober 23, 2020

最近需要用python打包一个单页面网页demo,于是准备用python包pyinstaller来打包程序。网上搜索了一下,大部分教程都是打包非web项目,这里分享一下打包简单网页demo的过程。

系统环境:win10+python3.6

一、安装pyinstaller

pip install pyinstaller

二、打包项目

1.如果是单文件项目,pyinstaller可以通过简单的命令进行python代码的打包工作,其命令为:

pyinstaller -option ***.py

1.1参数option可以有多个值:

-F : 指定打包后只生成一个exe格式的文件

-D : 生成一个文件目录包含可执行文件和相关动态链接库和资源文件等(默认选项)

-c : ?console, ?nowindowed 使用控制台,无界面(默认选项)

-w : ?windowed, ?noconsole 使用窗口,无控制台

1.2注意

①再增加一个命令参数 -w 可以保证点击生成的exe文件不会弹出黑色控制台窗口

    

 ②不加 -F 参数会生成一堆文件,但是运行速度快; 加-F参数生成一个exe文件,运行起来慢

2.如果不是单文件项目,而是有多级目录(包含一些依赖的静态资源),需要自定义打包

本文以打包自己的单页面网页demo为例,各级目录结构如下:

python 利用Pyinstaller打包Web项目

python 利用Pyinstaller打包Web项目

2.1为了进行自定义配置打包,需要先输出配置文件.spec文件,执行命令:

pyi-makespec -D -w main.py

注:

-w 参数是为了保证不会产生黑色控制台窗口

-D 参数生成一个文件目录包含可执行文件和相关动态链接库和资源文件等(默认选项,也可以不加)

生成的 main.spec 文件如下:

python 利用Pyinstaller打包Web项目

2.2为了是使打包生成后的exe文件可以加载css、js、图片等静态资源,这里需要添加依赖路径(注意:要保证自己 html 里面加载静态资源的路径是相对路径才行)。具体来说,此类资源文件的打包需要设置Analysis的datas,如下:

python 利用Pyinstaller打包Web项目

2.3执行打包命令:

pyinstaller main.spec

成功!

最终结果:

python 利用Pyinstaller打包Web项目

python 利用Pyinstaller打包Web项目

 3.一些报错

①执行打包命令时,报错:RecursionError: maximum recursion depth exceeded

原因:应该是python库递归遍历太深,超过了python预设的递归深度,导致出现 “RecursionError: maximum recursion depth exceeded" 的错误

解决办法:在spec文件里设置一个大点的递归深度,在该文件第二行,添加代码如下:

import sys
sys.setrecursionlimit(50000)

②python打包pywebview时,可能会报错:WebBrowserInterop.x64.dll not found

原因:这是由于系统没有找到WebBrowserInterop.x64.dll

解决办法:将WebBrowserInterop.x64.dll文件的所在路径添加到系统环境变量里即可!

WebBrowserInterop.x64.dll文件的所在路径:

python 利用Pyinstaller打包Web项目

添加到系统环境变量:

python 利用Pyinstaller打包Web项目

4.注意事项

①如果生成的exe文件双击无法正常运行,也没有报错提示,此时,如果想看具体报错信息,就不要直接双击执行,而是在控制台下执行。如果这样还是无法看到报错信息,则在打包软件时不要使用 -w 参数,这样在运行生成的exe时就可以弹出黑色控制台窗口,从而就可以在黑色控制台上面看到报错信息

②如果要减小打包体积,可以使用conda创建python虚拟环境,然后只安装需要的包,最后再进行打包,这样体积会大大减小

以上就是python 利用Pyinstaller打包Web项目的详细内容,更多关于python 打包项目的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Python实现中一次读取多个值的方法
Apr 22 Python
Python Requests库基本用法示例
Aug 20 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
python ChainMap的使用和说明详解
Jun 11 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
python实现斗地主分牌洗牌
Jun 22 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
python实现视频压缩功能
Dec 18 Python
python logging模块的使用详解
Oct 23 #Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 #Python
Python中免验证跳转到内容页的实例代码
Oct 23 #Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 #Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 #Python
详解python模块pychartdir安装及导入问题
Oct 22 #Python
Python实现自动装机功能案例分析
Oct 22 #Python
You might like
php二分法在IP地址查询中的应用
2008/08/12 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php生成短网址示例
2014/05/05 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
layer实现弹窗提交信息
2016/12/12 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python 等差数列末项计算方式
2020/05/03 Python
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
NET程序员上机面试题
2015/05/23 面试题
优秀社区干部事迹材料
2014/02/03 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
酒店员工手册范本
2015/05/14 职场文书
python实现简易名片管理系统
2021/04/11 Python
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏