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三种遍历文件目录的方法实例代码
Jan 19 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
python kafka 多线程消费者&手动提交实例
Dec 21 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
Python如何使用input函数获取输入
Aug 06 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
Python图像识别+KNN求解数独的实现
Nov 13 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
PHP 加密解密内部算法
2010/04/22 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
vue实现扫码功能
2020/01/17 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
Python 字符串中的字符倒转
2008/09/06 Python
用Python抢过年的火车票附源码
2015/12/07 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
Python实现完整的事务操作示例
2017/06/20 Python
python与C互相调用的方法详解
2017/07/14 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
python实现数据分析与建模
2019/07/11 Python
Python PyQt5整理介绍
2020/04/01 Python
python中shell执行知识点
2020/05/06 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
python压包的概念及实例详解
2021/02/17 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
大学生求职自荐信
2013/12/12 职场文书
英语教学课后反思
2016/02/15 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python