【torch安装踩雷】torchtext、torch、anaconda安装问题解决

  • Post author:
  • Post category:其他


最近因为寒假即将结束,也要继续毕设的工作了,但是在回归pytorch学习的时候,遇到很大问题,烦了我挺长一段时间,终于解决。由于《动手学深度学习Pytorch》一书中需要torchtext包,围绕着这个包的安装,我踩了不少雷。但是在这解决问题们的过程中,获得了很多知识,收纳下来吧。



torchtext安装问题

现有的很多博客的教程都有很大问题!


如果直接用

pip install torchtext

,会给你把torch也更新成别的版本了,导致显卡不能加速了,特别坑!!!

最后借鉴:

说的很好



源码



为啥不一开始看它

**原理:**torchtext和pytorch是根据版本对应的,如果你直接pip安装,那么就会同时更新你的torch版本,但是torch版本直接影响到了对显卡的支持,和pysyft之类的库的关联使用。所以我们要指定对应版本来安装,不能让他自动升级我们的torch。

经过亲身实践,不建议用pip install torchtext=0.11.0 这种指定包的版本的操作,我最后用了

conda install -c pytorch torchtext

命令,顺利安装!(安装的时候看一下,如果发现正在下载torch就赶紧停了,如果告诉你会按照torchtext、torchvision等包的时候就说明正确的)



torch安装问题

由于我的憨憨操作导致原来的整个环境都不好使了,于是就准备重新装虚拟环境,并安装torch,但是我在找自己的CUDA版本的时候,发现我的CUDA居然是11.6,而pytorch官网只有CUDA为10.2和11.3的版本啊?(因为我的nvcc好像有的问题找不到文件,所以我只能用这种方法看CUDA版本了)。

后来问了同学才知道是因为我升级了显卡驱动,这里显示的应该是我打游戏时用的驱动,和CUDA不是一个(为了流畅的玩《只狼》,下载了GeForce Experience优化),而现在的pytorch安装采用了cudatoolkit,所以其实不用管所谓的CUDA11.6,直接

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

完事了!

但是,我下载的时候还是遇到了问题,这就继续说说conda的毛病。



conda问题

在我一开始torchtext安装失败的时候,conda提示我可以升级,于是我就conda update了一下,然后!


我不挂梯子下载torch就根本下载不了,并且给我报错http连接失败,证明是网络问题;当我挂了梯子的时候,又会报错:

Collecting package metadata (repodata.json): failed
ProxyError: Conda cannot proceed due to an error in your proxy configuration.
Check for typos and other configuration errors in any '.netrc' file in your home directory,
any environment variables ending in '_PROXY', and any other system-wide proxy
configuration settings.

说是代理问题。。。这下我不管咋样都安装不了torch了,很气,气了一下午。

然后我准备重装anaconda!我先把我env文件夹复制了一份,这样其它环境到时候就不用再配置了。

然后按照

这个来安装

。手动添加环境变量,最后成功!

接下来也就是正常安装torch,正常安装torchtext和其它需要的包了。



其它小点

在我刚刚安装torch完毕的时候,还是不能直接import进去,会给我报错from . import _distributor_init什么的,并且import numpy也会报这个错,后面觉得应该是numpy的版本有问题,我就

uninstall

然后

install

了一下,报错就顺利解除了。

我在验证自己GPU能否使用的时候,用如下代码:

import torch
from torch import nn
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.get_device_name(0))

提醒:

torch.cuda.is_available()

等语句,需要你把它的结果print出来,否则是不会有输出的,因为这个我一度以为自己的GPU没法用了,其实正确的。



版权声明:本文为QinZheng7575原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。