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

使用PyInstaller打包含torchaudio(CPU版)的Python脚本为exe时遇属性错误

PyInstaller打包torchaudio脚本报错解决方案

问题概述

在Windows系统中,使用无GPU支持的torchaudio编写的Python脚本直接运行正常,但通过PyInstaller打包为.exe文件后运行,出现AttributeError: '_OpNamespace' 'torchaudio' object has no attribute 'cuda_version'错误。尝试安装带CUDA的torch后问题依旧,且包体积大幅增加。

复现代码

import torchaudio
import time

if __name__ == '__main__':
    t = torchaudio.transforms
    time.sleep(3)
    print("Success")

错误信息

Traceback (most recent call last):
  File "torch\_ops.py", line 501, in __getattr__
    op, overload_names = torch._C._jit_get_operation(qualified_op_name)
RuntimeError: No such operator torchaudio::cuda_version

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "torchaudio\__init__.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "torchaudio\_extension.py", line 136, in <module>
  File "torchaudio\_extension.py", line 121, in _check_cuda_version
  File "torch\_ops.py", line 505, in __getattr__
    raise AttributeError(
AttributeError: '_OpNamespace' 'torchaudio' object has no attribute 'cuda_version'
[11648] Failed to execute script 'test' due to unhandled exception!

环境版本

  • python==3.9.15
  • torch==1.13.0(无GPU支持)
  • torchaudio==0.13.0
  • pyinstaller==5.6.2
  • six==1.15.0
  • numpy==1.22.4
  • scipy==1.6.0
  • sounddevice==0.4.5

解决方法

方法1:强制收集torchaudio所有文件

使用PyInstaller的--collect-all参数,确保打包时收集torchaudio的所有依赖文件,避免遗漏必要的扩展组件:

pyinstaller --collect-all torchaudio test.py

方法2:禁用CUDA检查(无GPU场景适用)

在脚本开头添加环境变量,强制torchaudio跳过CUDA版本检查,避免触发不存在的cuda_version操作符:

import os
# 禁用CUDA检查
os.environ['TORCH_AUDIO_NO_CUDA'] = '1'

import torchaudio
import time

if __name__ == '__main__':
    t = torchaudio.transforms
    time.sleep(3)
    print("Success")

修改后再用PyInstaller打包即可。

方法3:修改.spec文件(进阶)

如果上述方法无效,可手动编辑生成的test.spec文件,添加torchaudio的隐藏导入和二进制文件收集:

  1. 生成.spec文件:pyinstaller --specpath . test.py
  2. 打开test.spec,修改Analysis部分:
a = Analysis(
    ['test.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['torchaudio._extension', 'torchaudio._torchaudio'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
  1. 重新打包:pyinstaller test.spec

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:20:58