最近需要用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项目的更多相关文章

  1. MAVEN创建并打包web项目

    maven项目是由一个maven project和多个maven module组成的,以下简介一下maven webapp的创建和打包,前提是你已经安装配置好maven了. 打开eclipse.依照例 ...

  2. java 打包web 项目

    1 选择你的web项目 2 右击,选择export 3 选择web下的war file 4 将打包好war包,保存在tomcat的webapps下 5 运行tomcat,tomcat会自动帮你解压这个 ...

  3. IDAE打包WEB项目 WAR Eclipse转IDEA项目

    接下来这里只说WEB项目打包,相信大多数都是用的WEB项目吧,关于打包WAR,真的很头痛,网上说的试了好好次都不行. 后来懂了之后,真的很简单好么,分享给大家   不要多走弯路了. 注意:   如果你 ...

  4. 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 ...

  5. python3.6 使用pyinstaller 打包web程序的方法

    官方文档连接 (https://pyinstaller.readthedocs.io/en/stable/ ) 第一步,下载pywin32 首先下载pywin32,下面是下载链接,下载自己的系统版本对 ...

  6. pyinstaller打包django项目成exe以及遇到的一些问题

    1. 环境 环境为:win7 + Python3.6 + Django (2.1.10) + PyInstaller (3.5) 注意: 这里的PyInstaller,笔者是直接使用pip安装,中间会 ...

  7. pyinstaller打包Django项目

    系统:ubuntu18.04 / Centos 7自带Python3.61.安装pip3     apt-get install -y python3-pip     pip3 install --u ...

  8. Eclipse 打包Web项目

    使用插件fatjar Fat jar插件 http://kurucz-grafika.de/fatjar eclipse菜单栏 help->install new software...-> ...

  9. IDEA打包web项目为war,通过本地Tomcat启动war

    1.打包 ①idea的打包很简单,网上教程也很多,简单说下:project struct-->artifact-->+-->Web Application:Archive--> ...

随机推荐

  1. webstorm常见快捷方法与遇到的一些问题

    1.动态添加标签快捷写法 例子:生成10个文字按顺序编号的class为task-item的div 2.win10下webstorm的terminal无法输入? 打开一个 cmd.exe,标题栏 右键 ...

  2. 前端 -- javas-基本语法/引用等

    javas-基本语法/引用等 JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScri ...

  3. pytorch实现kaggle猫狗识别

    参考:https://blog.csdn.net/weixin_37813036/article/details/90718310 kaggle是一个为开发商和数据科学家提供举办机器学习竞赛.托管数据 ...

  4. NX二次开发-UFUN输入对象tag获得part名字UF_OBJ_ask_owning_part

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_part.h> #include < ...

  5. string替换所有指定字符串(C++)【转载】

    转载自https://blog.csdn.net/a_222850215/article/details/79985504 C++的string提供了replace方法来实现字符串的替换,但是对于将字 ...

  6. OSI七层网络模型分别是哪七层?各运行那些协议?

    本文摘自:https://blog.csdn.net/JeremyZJM/article/details/78184775 应用层 DHCP · DNS · FTP · Gopher · HTTP · ...

  7. n-map安装实操

    强烈建议大家从官网下载nmap,而不是其他的第三方.官网地址:https://nmap.org/download.html 打开是这样的,感觉有点阴森森的色调.BTW,谁能逃得过真香定律呢. wind ...

  8. sklearn中回归器性能评估方法

    explained_variance_score() mean_absolute_error() mean_squared_error() r2_score() 以上四个函数的相同点: 这些函数都有一 ...

  9. 【Latex】一些使用

    http://www.mohu.org/info/symbols/symbols.htm GG..研究个公式就搞这么晚了..还不知道那三个报错的是怎么回事.. 意识模糊..睡了睡了. # Latex ...

  10. swt java 内嵌ActiveX控件

    这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFra ...