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 相关文章推荐
python2.7 json 转换日期的处理的示例
Mar 07 Python
Python解决八皇后问题示例
Apr 22 Python
python根据url地址下载小文件的实例
Dec 18 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
浅析Python 引号、注释、字符串
Jul 25 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
多个python文件调用logging模块报错误
Feb 12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 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 压缩文件夹的类代码
2009/11/05 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
IE下js调试工具Companion.JS
2010/10/15 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
js实现右键菜单功能
2016/11/28 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
python输入错误后删除的方法
2019/10/12 Python
Python Lambda函数使用总结详解
2019/12/11 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
python实现超级玛丽游戏
2020/03/18 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
《匆匆》教学反思
2014/02/22 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
运动会标语
2014/06/21 职场文书
浅谈MySQL中的六种日志
2022/03/23 MySQL