You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包FastAPI+PyTorch项目遇torchvision警告及重载问题

解决PyInstaller打包PyTorch/FastAPI项目的警告问题

针对torchvision.io.image的UserWarning

  • 完整打包torchvision依赖库:找到torchvision安装目录下的Lib\site-packages\torchvision\lib文件夹,将其中所有dll文件(包括libpng16.dll、libjpeg.dll、libtiff.dll、zlib.dll等)复制到项目根目录,然后在PyInstaller的spec文件中通过datas参数统一打包:
    datas=[
        ('./libpng16.dll', '.'),
        ('./libjpeg.dll', '.'),
        ('./libtiff.dll', '.'),
        ('./zlib.dll', '.')
    ]
    
  • 定向屏蔽警告:如果只是不想看到该类警告,在项目入口文件开头添加代码,精准屏蔽torchvision的UserWarning:
    import warnings
    warnings.filterwarnings("ignore", category=UserWarning, module="torchvision.io.image")
    

针对torch.jit的重载函数警告

  • 升级PyTorch版本:部分旧版PyTorch与PyInstaller的静态打包逻辑存在兼容性问题,升级到2.0及以上稳定版,可解决多数jit相关的打包警告。
  • 添加自定义PyInstaller钩子:创建hook-torch.jit.py文件,内容如下,放在项目根目录,打包时通过--additional-hooks-dir=.指定钩子目录:
    from PyInstaller.utils.hooks import collect_submodules
    
    hiddenimports = collect_submodules('torch.jit')
    
  • 移除非必要的jit代码:如果项目中没有强制依赖torch.jit的场景,替换掉@torch.jit.script_method装饰的函数,改用普通函数实现。

额外打包优化建议

  • 优先使用--onedir模式打包:相比单文件模式,目录模式下依赖文件的加载路径更稳定,可避免大量路径类报错,之后可借助工具将目录打包为单文件。
  • 每次打包前清理缓存:删除build、dist目录及生成的spec文件,避免旧缓存导致的问题残留。

内容的提问来源于stack exchange,提问作者HONG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:03:16