无法导入 Torch (ImportError: libcudart.so.10.0)

Posted

技术标签:

【中文标题】无法导入 Torch (ImportError: libcudart.so.10.0)【英文标题】:Unable to import torch (ImportError: libcudart.so.10.0) 【发布时间】:2020-09-08 21:13:05 【问题描述】:

我目前正在开发 Nvidia Jetson Nano,我对 Linux 不是很熟悉。我正在尝试运行一个python文件,该文件导入一个名为torch的包。我按照 NVIDIA here 的说明将它与 torchvision 一起安装。

当我在终端上运行pip list 时,我可以看到torch 列为已安装的软件包之一。但是,由于下面看到的错误,我无法运行 python 文件。当我尝试在 python shell 上运行它时,会弹出相同的错误。 仅供参考:以前它存在问题,因为系统默认使用 python 2,但我已经通过编辑 .bashrc 文件切换到 python 3 修复了路径。

>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jiayi/.local/lib/python3.6/site-packages/torch/__init__.py", line 81, in <module>
    from torch._C import *
ImportError: libcudart.so.10.0: cannot open shared object file: No such file or directory

我尝试通过 pip 卸载和安装,但无济于事。当我尝试安装 pytorch 包时(按照来自 github repo here 的说明),出现如下错误,这是由于相同的问题。它能够检测到安装了torch包,但似乎存在内部问题。

Requirement already satisfied: torch==1.4.0 from file:///home/jiayi/jetson-inference/build/torch-1.4.0-cp36-cp36m-linux_aarch64.whl in /home/jiayi/.local/lib/python3.6/site-packages (1.4.0)
[jetson-inference]  cloning torchvision...
[sudo] password for jiayi: 
Cloning into 'torchvision-36'...
remote: Enumerating objects: 71, done.
remote: Counting objects: 100% (71/71), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 8219 (delta 37), reused 29 (delta 15), pack-reused 8148
Receiving objects: 100% (8219/8219), 10.22 MiB | 3.60 MiB/s, done.
Resolving deltas: 100% (5631/5631), done.
[jetson-inference]  building torchvision for Python 3.6...
Traceback (most recent call last):
  File "setup.py", line 14, in <module>
    import torch
  File "/home/jiayi/.local/lib/python3.6/site-packages/torch/__init__.py", line 81, in <module>
    from torch._C import *
ImportError: libcudart.so.10.0: cannot open shared object file: No such file or directory

[jetson-inference]  installation complete, exiting with status code 0
[jetson-inference]  to run this tool again, use the following commands:

    $ cd <jetson-inference>/build
    $ ./install-pytorch.sh

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题。问题似乎是cuda 10.2。降级到 10.0 也无济于事。可能解决方案是从 Jetpack 手动安装所有内容,并确保要安装的 cuda 版本为 10.0。

【讨论】:

【参考方案2】:

您可以通过检查torch.version.cuda 并确保它与您的 jetson nano 上的 cuda 版本相同,来检查您是否安装了支持您 cuda 的正确版本的 torch。

安装torch 的更简单方法是从Jetson Zoo 下载.whl 文件。将您的 nano 升级到最新的 Jetpack 版本也可能很有用

【讨论】:

当我在终端上运行torch.version.cuda 时,它给了我bash: torch.version.cuda: command not found。不应该是这样,我想知道您是否知道原因,因为我并不真正熟悉它。 在你的命令行上,请做两件事。 nvcc -V 这将在您的 nano 上显示已安装的 cuda。接下来,输入您的 python 并通过执行以下操作找到 torch cuda 版本。 python3import torchtorch.version.cuda。这将显示您的手电筒 cuda 版本。请确保它们都匹配 我能够运行nvcc -V。但是,当我尝试在我的 python shell 上运行 import torch 时,它会给出原始问题(第一个代码块)中列出的错误。当我通过pythonpython3 打开外壳时会发生这种情况。 只是出于好奇,你的nvcc -V的输出是什么 这里是:nvcc:NVIDIA (R) Cuda 编译器驱动程序 版权所有 (c) 2005-2019 NVIDIA Corporation 基于 Wed_Oct_23_21:14:42_PDT_2019 构建的 Cuda 编译工具,版本 10.2,V10.2.89

以上是关于无法导入 Torch (ImportError: libcudart.so.10.0)的主要内容,如果未能解决你的问题,请参考以下文章

变压器:导入包时出错。 “ImportError:无法从 'torch.optim.lr_scheduler' 导入名称 'SAVE_STATE_WARNING'”

ImportError:无法导入名称发现

ImportError:无法导入名称“评估”(来自意外导入评估)

ImportError:导入 PCA 时无法导入名称“LatentDirichletAllocation”[关闭]

ImportError:无法导入名称 VarianceThreshold

ImportError:无法导入名称“AFAVSignature”