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
相关产品推荐
相关产品推荐

