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

使用torchvision的Python程序打包为PyInstaller可执行文件失败,报错求解决

解决auto-py-to-exe打包torchvision程序时的“lib not found”问题

问题场景

使用torchvision库的Python程序,通过auto-py-to-exe(基于PyInstaller)打包为可执行文件时,出现大量“lib not found”警告,典型警告片段如下:

(LPM_env) F:\LPM Environment>auto-py-to-exe
49104 WARNING: lib not found: torch_cpu.dll dependency of f:\lpm environment\lpm_env\lib\site-packages\torchvision\_C.pyd
49178 WARNING: lib not found: c10.dll dependency of f:\lpm environment\lpm_env\lib\site-packages\torchvision\_C.pyd
49342 WARNING: lib not found: torch_python.dll dependency of f:\lpm environment\lpm_env\lib\site-packages\torch\_C_flatbuffer.cp37-win_amd64.pyd
50148 WARNING: lib not found: swscale-5-a27d1997.dll dependency of f:\lpm environment\lpm_env\lib\site-packages\av\video\reformatter.cp37-win_amd64.pyd
...
60755 WARNING: lib not found: torch_python.dll dependency of f:\lpm environment\lpm_env\lib\site-packages\torch\_C.cp37-win_amd64.pyd

解决方案

1. 手动添加缺失的DLL文件

  • 定位DLL路径:torch相关DLL通常在虚拟环境的Lib\site-packages\torch\lib目录下;av库的DLL在Lib\site-packages\av\lib(若存在)或av安装目录对应位置。
  • 在auto-py-to-exe界面中,找到「Additional Files」选项,将这些DLL文件或整个lib文件夹添加,设置输出路径为根目录(.)。
  • 若直接用PyInstaller命令,使用--add-binary参数:
    pyinstaller --add-binary "F:\LPM Environment\lpm_env\Lib\site-packages\torch\lib\*.dll;." --add-binary "F:\LPM Environment\lpm_env\Lib\site-packages\av\lib\*.dll;." your_script.py
    

2. 编写PyInstaller钩子文件

创建名为hook-torchvision.py的钩子文件,内容如下:

from PyInstaller.utils.hooks import collect_dynamic_libs

# 收集torch、torchvision、av的动态链接库
binaries = collect_dynamic_libs('torch')
binaries += collect_dynamic_libs('torchvision')
binaries += collect_dynamic_libs('av')
  • 将该文件放到PyInstaller默认hooks目录(通常是Lib\site-packages\PyInstaller\hooks),或打包时通过--additional-hooks-dir指定钩子目录:
    pyinstaller --additional-hooks-dir ./hooks your_script.py
    

3. 确保库版本兼容

  • 确认torch、torchvision、av的版本与Python3.7兼容,优先使用官方预编译包(pip安装的稳定版本),避免源码编译的库——源码编译的DLL路径可能不在PyInstaller默认搜索范围内。

4. 手动复制DLL到打包目录

若上述方法无效,直接将所有缺失的DLL文件复制到打包生成的dist目录下的程序文件夹,或打包前复制到Python脚本所在目录,PyInstaller会自动将其包含进可执行文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:09:52