Pyinstaller打包Web项目
最近需要用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为例,各级目录结构如下:
2.1为了进行自定义配置打包,需要先输出配置文件.spec文件,执行命令:
pyi-makespec -D -w main.py
注:
-w 参数是为了保证不会产生黑色控制台窗口
-D 参数生成一个文件目录包含可执行文件和相关动态链接库和资源文件等(默认选项,也可以不加)
生成的 main.spec 文件如下:
2.2为了是使打包生成后的exe文件可以加载css、js、图片等静态资源,这里需要添加依赖路径(注意:要保证自己 html 里面加载静态资源的路径是相对路径才行)。具体来说,此类资源文件的打包需要设置Analysis的datas,如下:
2.3执行打包命令:
pyinstaller main.spec
成功!
最终结果:
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文件的所在路径:
添加到系统环境变量:
4.注意事项
①如果生成的exe文件双击无法正常运行,也没有报错提示,此时,如果想看具体报错信息,就不要直接双击执行,而是在控制台下执行
Pyinstaller打包Web项目的更多相关文章
- MAVEN创建并打包web项目
maven项目是由一个maven project和多个maven module组成的,以下简介一下maven webapp的创建和打包,前提是你已经安装配置好maven了. 打开eclipse.依照例 ...
- java 打包web 项目
1 选择你的web项目 2 右击,选择export 3 选择web下的war file 4 将打包好war包,保存在tomcat的webapps下 5 运行tomcat,tomcat会自动帮你解压这个 ...
- IDAE打包WEB项目 WAR Eclipse转IDEA项目
接下来这里只说WEB项目打包,相信大多数都是用的WEB项目吧,关于打包WAR,真的很头痛,网上说的试了好好次都不行. 后来懂了之后,真的很简单好么,分享给大家 不要多走弯路了. 注意: 如果你 ...
- Maven打包web项目报错:webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update)
问题描述 使用Maven打包项目的时候,出现错误: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing ...
- python3.6 使用pyinstaller 打包web程序的方法
官方文档连接 (https://pyinstaller.readthedocs.io/en/stable/ ) 第一步,下载pywin32 首先下载pywin32,下面是下载链接,下载自己的系统版本对 ...
- pyinstaller打包django项目成exe以及遇到的一些问题
1. 环境 环境为:win7 + Python3.6 + Django (2.1.10) + PyInstaller (3.5) 注意: 这里的PyInstaller,笔者是直接使用pip安装,中间会 ...
- pyinstaller打包Django项目
系统:ubuntu18.04 / Centos 7自带Python3.61.安装pip3 apt-get install -y python3-pip pip3 install --u ...
- Eclipse 打包Web项目
使用插件fatjar Fat jar插件 http://kurucz-grafika.de/fatjar eclipse菜单栏 help->install new software...-> ...
- IDEA打包web项目为war,通过本地Tomcat启动war
1.打包 ①idea的打包很简单,网上教程也很多,简单说下:project struct-->artifact-->+-->Web Application:Archive--> ...
随机推荐
- CUDA并行计算 | 线程模型与内存模型
文章目录 前言 CUDA线程模型(如何组织线程) CUDA内存模型(了解不同内存优缺点,合理使用) 前言 CUDA(Compute Unified Device Architecture)是显卡厂 ...
- idea从零搭建简单的springboot+Mybatis
需用到的sql /* Navicat MySQL Data Transfer Source Server : localhost root Source Server Version : 80012 ...
- LeetCode 817. Linked List Components (链表组件)
题目标签:Linked List 题目给了我们一组 linked list, 和一组 G, 让我们找到 G 在 linked list 里有多少组相连的部分. 把G 存入 hashset,遍历 lin ...
- Centos6.5安装rar5.3
linux下使用最多的压缩工具是gzip,zip等,如果需要使用rar,就必须编译安装了,以下是编译安装rar教程: 一.安装支持库yum install -y gcc gcc-c++ autocon ...
- Git及github使用(二)上传项目
接上篇中创建好的项目. 1.进入到相应的目录右键Git bash here打开客户端 2.创建一个readme文本 $ echo "# Python日常记录积累" >> ...
- DRF的请求响应组件
目录 DRF的请求响应组件 请求模块(request) 概念 request源码简单分析 响应模块(response) 概念 使用方法 response源码简单分析: 解析模块(parse) 概念 使 ...
- HDU 2874 /// tarjan离线求森林里两点的距离
题目大意: 在一个森林里 询问 u v 两点 若不能到达输出 "Not connected" 否则输出两点距离 https://blog.csdn.net/keyboarderqq ...
- 查看Linux 内核版本命令
1.Ubuntu 查看版本命令,三种方法. 1.使用 "uname -a" 2.使用 "lsb_release -a" 3.使用 "cat ...
- iOS进阶二-KVC
概述 KVC的全程是Key-Value Coding, 俗称"键值编码",可以通过一个key来访问属性 常见的AP有 - (void)setValue:(nullable id)v ...
- kcptun搭建
wget --no-check-certificate https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh sha ...