本文中的部分内容来源于网络搜索和个人实践总结。文中若有任何错误,还请读者批评指正。本文仅用于学习研究,不作为任何商业用途。
在前期文章中,我使用 Gradio 库构建了几个简单的应用程序,但使用Pyinstaller打包失败,我介绍了如何通过迁移虚拟环境再通过.bat脚本直接进入虚拟环境编译运行代码,实现一个类似打包的效果
打包gradio应用的一次成功尝试_friklogff的博客-CSDN博客
这篇文章我们继续完善,真正实现手动打包成一个可以完美实现打包迁移的.exe(以没有任何环境的全新虚拟机进行模拟)
目录
前言
一.问题背景
二.解决方案
2.1前期准备
2.1.1 bat转exe工具
2.1.2 IOC图标生成工具
2.2 我的快速迁移方式
三.总结
pyinstaller不可用,需要打包迁移python项目提交作品
BAT to EXE Converter
在线生成ICO图标
1.在新环境创建一个文件夹,将需要打包的项目代码放进去,cmd中输入以下代码,新建虚拟环境,激活虚拟环境,直接运行代码,我们需要打包的文件是gui.py
rem 创建虚拟环境
python -m venv venv
rem 激活虚拟环境
call venv\Scripts\activate.bat
rem 运行代码
python gui.py
2.通过反复运行python gui.py产生报错,得知这个虚拟环境中未安装的包
3.根据运行结果不断补充包,如图就需要安装:
pip install -i https://mirrors.aliyun.com/pypi/simple/ websocket
5. 重复第四步记录你安装了哪些包,然后创建一个如下run.bat文件
chcp 65001
@echo off
rem 检查python是否安装
python -V >nul 2>&1
if %errorlevel% == 0 (
echo Python已安装,版本为:
python -V
) else (
echo Python未安装,开始下载安装包
curl -O https://mirrors.huaweicloud.com/python/3.8.0/python-3.8.0-amd64.exe
echo 安装包下载完成,开始安装
python-3.8.0-amd64.exe /quiet InstallAllUsers=1 PrependPath=1
echo Python安装完毕
)
rem 创建虚拟环境
python -m venv venv
call venv\Scripts\activate.bat
rem 安装依赖中,请勿退出(这里修改为你第四步安装过的包)
pip install -i https://mirrors.aliyun.com/pypi/simple/ websocket
pip install -i https://mirrors.aliyun.com/pypi/simple/ websocket-client
pip install -i https://mirrors.aliyun.com/pypi/simple/ gradio
pip install -i https://mirrors.aliyun.com/pypi/simple/ sxtwl
python gui.py
这个.bat可以为没安装python的环境静默安装python3.8,使用这个.bat,你可以向任意空文件夹放入你的.py代码,以及run.bat,双击run.bat打开即可自动配置一个虚拟环境并运行你的代码
6.使用bat to exe为run.bat添加图标,并打包为exe
针对打包Gradio应用的需求,我尝试了多种方案,PyInstaller/cx_freeze/pyfreeze/setuptools存在兼容性问题;采用Docker等专业工具又过于复杂。经反复试验,我发现直接迁移Python虚拟环境是一种可行的解决方案。本篇文章是对上一篇文章的总结和拓展整合
打包gradio应用的一次成功尝试_friklogff的博客-CSDN博客
该方案的关键在于准备工作充分和迁移步骤合理。准备工作包括确认环境依赖和批处理文件的编写;迁移步骤包含拷贝代码、通过批处理文件自动化重建虚拟环境、安装依赖模块、创建启动脚本等。还需要注意依赖下载、版本控制等问题。总之,迁移虚拟环境可以实现Gradio应用的打包。这为我的项目找到了适合的解决方案。