python打包gradio 项目exe
安装打包工具
代码语言:javascript代码运行次数:0运行复制pip install pyinstaller
进行打包
使用命令 pyinstaller -F app.py
进行打包,其输出如下所示
505731 INFO: Copying icon to EXE
505735 INFO: Copying 0 resources to EXE
505736 INFO: Embedding manifest in EXE
505784 INFO: Appending PKG archive to EXE
505838 INFO: Fixing EXE headers
519361 INFO: Building EXE from EXE-00.toc completed successfully.
520246 INFO: checking COLLECT
520246 INFO: Building COLLECT because COLLECT-00.toc is non existent
520246 INFO: Building COLLECT COLLECT-00.toc
542317 INFO: Building COLLECT COLLECT-00.toc completed successfully.
运行exe
代码语言:javascript代码运行次数:0运行复制[Errno 2] No such file or directory: gradio_client\types.json
这是由于pyinstaller 没有准确的识别出用于代码中gradio_client与gradio库的依赖项,需要将打包命令修改下命令即可,也就是补充上 --collect-data=gradio_client --collect-data=gradio ,完整命令如下:
代码语言:javascript代码运行次数:0运行复制pyinstaller -F app.py --collect-data=gradio_client --collect-data=gradio
运行还是报错缺少其他文件,反复发现缺少好多依赖....
查看当前所有依赖
代码语言:javascript代码运行次数:0运行复制pip freeze
继续打包
代码语言:javascript代码运行次数:0运行复制pyinstaller --onefile --collect-all aiofiles --collect-all annotated_types --collect-all anyio --collect-all certifi --collect-all charset_normalizer --collect-all click --collect-all colorama --collect-all dateutil --collect-all fastapi --collect-all ffmpy --collect-all filelock --collect-all fsspec --collect-all gradio --collect-all gradio_client --collect-all groovy --collect-all h11 --collect-all httpcore --collect-all httpx --collect-all huggingface_hub --collect-all idna --collect-all jinja2 --collect-all lxml --collect-all markdown_it --collect-all markupsafe --collect-all mdurl --collect-all multipart --collect-all numpy --collect-all opencc --collect-all orjson --collect-all packaging --collect-all pandas --collect-all pillow --collect-all pip --collect-all pydantic --collect-all pydantic_core --collect-all pydub --collect-all pygments --collect-all python_multipart --collect-all pytz --collect-all requests --collect-all rich --collect-all ruff --collect-all safehttpx --collect-all semantic_version --collect-all setuptools --collect-all shellingham --collect-all sniffio --collect-all starlette --collect-all tomlkit --collect-all tqdm --collect-all typer --collect-all tzdata --collect-all urllib3 --collect-all uvicorn --collect-all websockets --collect-all wheel app.py
再次执行时出现以下报错
代码语言:javascript代码运行次数:0运行复制FileNotFoundError: [Errno 2] No such file or directory: gradio\blocks_events.pyc
这是由于gradio库中的代码都是pyi文件,而pyinstaller 在打包时默认库中的都是pyc文件,故而需要修改spec文件,指定对gradio库下的代码进行编译。
生成spec文件
代码语言:javascript代码运行次数:0运行复制pyi-makespec --onefile --collect-all aiofiles --collect-all annotated_types --collect-all anyio --collect-all certifi --collect-all charset_normalizer --collect-all click --collect-all colorama --collect-all dateutil --collect-all fastapi --collect-all ffmpy --collect-all filelock --collect-all fsspec --collect-all gradio --collect-all gradio_client --collect-all groovy --collect-all h11 --collect-all httpcore --collect-all httpx --collect-all huggingface_hub --collect-all idna --collect-all jinja2 --collect-all lxml --collect-all markdown_it --collect-all markupsafe --collect-all mdurl --collect-all multipart --collect-all numpy --collect-all opencc --collect-all orjson --collect-all packaging --collect-all pandas --collect-all pillow --collect-all pip --collect-all pydantic --collect-all pydantic_core --collect-all pydub --collect-all pygments --collect-all python_multipart --collect-all pytz --collect-all requests --collect-all rich --collect-all ruff --collect-all safehttpx --collect-all semantic_version --collect-all setuptools --collect-all shellingham --collect-all sniffio --collect-all starlette --collect-all tomlkit --collect-all tqdm --collect-all typer --collect-all tzdata --collect-all urllib3 --collect-all uvicorn --collect-all websockets --collect-all wheel app.py
隐藏控制台
添加以下参数 --noconsole
pyi-makespec --onefile --noconsole --collect-all aiofiles --collect-all annotated_types --collect-all anyio --collect-all certifi --collect-all charset_normalizer --collect-all click --collect-all colorama --collect-all dateutil --collect-all fastapi --collect-all ffmpy --collect-all filelock --collect-all fsspec --collect-all gradio --collect-all gradio_client --collect-all groovy --collect-all h11 --collect-all httpcore --collect-all httpx --collect-all huggingface_hub --collect-all idna --collect-all jinja2 --collect-all lxml --collect-all markdown_it --collect-all markupsafe --collect-all mdurl --collect-all multipart --collect-all numpy --collect-all opencc --collect-all orjson --collect-all packaging --collect-all pandas --collect-all pillow --collect-all pip --collect-all pydantic --collect-all pydantic_core --collect-all pydub --collect-all pygments --collect-all python_multipart --collect-all pytz --collect-all requests --collect-all rich --collect-all ruff --collect-all safehttpx --collect-all semantic_version --collect-all setuptools --collect-all shellingham --collect-all sniffio --collect-all starlette --collect-all tomlkit --collect-all tqdm --collect-all typer --collect-all tzdata --collect-all urllib3 --collect-all uvicorn --collect-all websockets --collect-all wheel app.py
修改spec文件
添加gradio的编译
代码语言:javascript代码运行次数:0运行复制a = Analysis(
['app.spec'],
pathex=[],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
module_collection_mode={ 'gradio': 'py',},
optimize=0,
)
修改后,删除掉目录下的build文件夹,再次执行 pyinstaller app.spec
即可
成功运行
代码语言:javascript代码运行次数:0运行复制* Running on local URL: http://10.211.55.5:7860
To create a public link, set `share=True` in `launch()`.
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-11,如有侵权请联系 cloudcommunity@tencent 删除工具python打包exe编译发布者:admin,转转请注明出处:http://www.yc00.com/web/1748339025a4765682.html
评论列表(0条)