python打包gradio 项目exe

安装打包工具代码语言:javascript代码运行次数:0运行复制pip install pyinstaller进行打包使用命令 pyinstaller -F app.py 进行打包,其输出如下所示代码语言:javascript代码运行次数

python打包gradio 项目exe

安装打包工具

代码语言:javascript代码运行次数:0运行复制
pip install pyinstaller

进行打包

使用命令 pyinstaller -F app.py 进行打包,其输出如下所示

代码语言:javascript代码运行次数:0运行复制
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

代码语言:javascript代码运行次数:0运行复制
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

相关推荐

  • python打包gradio 项目exe

    安装打包工具代码语言:javascript代码运行次数:0运行复制pip install pyinstaller进行打包使用命令 pyinstaller -F app.py 进行打包,其输出如下所示代码语言:javascript代码运行次数

    1天前
    50

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信