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文件双击无法正常运行,也没有报错提示,此时,如果想看具体报错信息,就不要直接双击执行,而是在控制台下执行

转载于:https://www.cnblogs.com/FHC1994/p/11250773.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyInstaller 是一个 Python 库,用于将 Python 程序打包成可执行文件,包括那些依赖了第三方库如 Selenium 的应用。Selenium 是一个流行的 Web 自动化测试框架,但为了在没有安装所有依赖的环境中运行,你需要使用 PyInstaller 进行静态或动态(in-tree)捆绑。 以下是使用 PyInstaller 打包包含 Selenium 的 Python 应用的基本步骤: 1. 安装 PyInstaller: ``` pip install pyinstaller ``` 2. 创建 `spec` 文件:这个文件定义了如何打包应用。首先,确保你的程序中导入了 Selenium,然后运行以下命令生成 spec 文件: ``` python -m pyinstaller --name=myapp --onefile myapp.py 或者 python -m pyinstaller --name=myapp --onefile --hidden-import=selenium myapp.py ``` 如果你的项目有特定的入口点,如 `main.py`,替换 `myapp.py` 为实际文件名。 3. 编辑 spec 文件(`myapp.spec`):如果生成的文件有错误,你可以手动编辑它。特别注意处理 `HiddenImports` 和 `RuntimeOptions` 部分,这些部分用于添加 Selenium 以及其他可能的隐式依赖。 4. 执行打包: ``` pyinstaller myapp.spec ``` 这将会创建一个 `dist` 文件夹,里面包含了打包后的可执行文件。 5. (可选) 优化和清理: - 使用 `--clean` 参数删除构建文件。 - 使用 `--upx` 参数启用 UPX 压缩工具以减小文件大小。 相关问题: 1. 在打包过程中如何处理 Selenium 的依赖? 2. PyInstaller 的 `--onefile` 选项有什么作用? 3. 如何在 `spec` 文件中指定隐式依赖,例如 Selenium?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值