首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从具有torchaudio (CPU)的.py中使用pyinstaller创建.py: AttributeError:“_OpNamespace”“torchaudio”对象没有属性“cuda_version”

无法从具有torchaudio (CPU)的.py中使用pyinstaller创建.py: AttributeError:“_OpNamespace”“torchaudio”对象没有属性“cuda_version”
EN

Stack Overflow用户
提问于 2022-11-15 19:59:15
回答 1查看 43关注 0票数 1

我有一个.py脚本,它使用torchaudio (没有GPU)在Windows中处理一些声音。为了分发它,我使用了pyinstaller将其转换为.exe。您可以用这个简单的脚本再现问题:

代码语言:javascript
复制
import torchaudio
import time

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

此脚本在python python test.py上正确运行,但我希望创建一个在test.exe中工作的test.exe(没有安装python )。我通过使用pyinstaller:test.exe创建pyinstaller test.py。这将创建一个具有所有所需依赖项(约1GB)的build/test文件夹。test.exe位于该文件夹中,但当我双击它时,它会失败,并出现以下错误:

代码语言:javascript
复制
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!

环境使用:

代码语言:javascript
复制
python==3.9.15
torch==1.13.0
six==1.15.0
numpy==1.22.4
scipy==1.6.0
sounddevice==0.4.5
torchaudio==0.13.0
pyinstaller==5.6.2

注意:我尝试了相同的安装火炬与库达,结果是相同的错误和一个4倍的建设更大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-17 23:01:39

我把剧本写好了。以下是我为让它运行所采取的步骤。

创建一个新的空目录,并将脚本粘贴到main.py

  1. py -m venv venv && venv\scripts\activate && py -m pip install --upgrade pip pyinstaller

  1. pip install torchaudio==0.13.0 torch==1.13.0 numpy=1.22.4 sounddevice==0.4.5 six==1.15.0 scipy

  1. pyinstaller -F main.py

main.py

  1. 进入venv\Lib\site包,复制整个torchaudio文件夹并将其粘贴到顶级目录中,并与venvvenv一起使用。

datas=[('./torchaudio','./torchaudio')]中的

  1. pyinstaller main.spec

在编译可执行程序之后..。它仍然发出一些警告,但它运行并打印成功信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74451478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档