最近从GitHub上拉了个项目,搞了好久才把pytorch环境对应完整。借此记录一下安装过程。
第一步:虚拟环境的创建
首先,你需要下载一个anaconda(推荐,当然也可以使用 其他的)。
- conda虚拟环境相关代码
虚拟环境的创建
conda create -n/–name env_name python=3.9
从克隆已有的虚拟环境env_name2
conda create -n/–name env_name --clone env_name2
虚拟环境激活
conda activate env_name
虚拟环境退出
conda deactivate (env_name)老版本需要加环境名
删除虚拟环境
conda env remove -n env_name
查看已有环境
conda env list 或者 conda info -e
查看当前环境中安装的包
conda list
第二步:查看你的硬件设施(显卡)
如果在使用torch时,你想要使用GPU加速,那么需要你的设备中有Nvidia的显卡。
- 查看方法
win+R输入cmd/powershell
直接输入nvidia-smi
你会看到如下内容
最顶端分别为显卡型号,驱动版本,以及cuda版本。
如果输入nvidia-smi提示不是内部命令,那么可以打开任务管理器-性能查看是否有有nvidia的显卡,如果有那么你需要先去官网查看显卡型号是否可用(有cuda版本)以及下载驱动。
显卡的驱动版本要求随时代变化,我写这篇文章时要求420以上,以后可能更高,不满足此条件也需要到官网更新驱动
第三步:安装torch
前面的要求都已经满足,那么就可以去pytorch官网进行下载。根据你的cuda版本,一定要选择低于你的cuda版本的torch进行安装。
如果你没有GPU可用,选择CPU版本,以及你的anaconda没有换过国内源,可以直接按照上面照片进行选择并在终端运行,一路y就可以完成安装。
如果你的anaconda已经换了清华源,因为清华源中只有CPU版本,所以选择查看以前的版本,在以前的版本中挑选最后带有网址的对应版本命令复制。
下载完成后可以使用conda list/pip list查看已经安装的包中有没有torch,以及torch的版本,如果有且版本是xx+cuxx,说明已经成功下载了GPU版本。
进一步检验,使用cmd/powershell输入python输入以下内容。
import torch
torch.__version__
torch.cuda.is_available()
如果没有报错且有照片中的内容说明你成功安装了torch。
如果最后输出的是false,你需要确定你的GPU是否真的可用,且驱动是达到要求的。
以上基础版的torch就已经安装完成。
plus步:torch-geometric包安装
在实验中经常会用到torch-geometric包,下面对这个包的安装方法进行说明。
- 在安装这个包之前,首先需要先安装torch-cluster,torch-scatter,torch-sparse,torch-spline-conv四个包。
- 这四个包建议登录torch-geometric官网根据你下载的torch版本进行手动下载。
torch版本在上面检验的时候查到过。
进入对应的版本中,选择符合自己要求的包进行下载。
这个页面中所包含的版本都是在你下载的pytorch中兼容的,这里建议可以直接下载高版本。
cp37指的是python3.7版本。(cp39对应pyhon3.9以此类推)
Linux和win分别代表Linus系统和Windows系统。
一般现在高版本都是64位的
下载好自己的包中在文件夹中查看
我这里因为是在服务器上配环境,所以下载的是Linux版本,通过xftp传到服务器上。
在对应的目录下,使用下面的命令以此安装四个包
pip install xx.whl
最后,直接使用pip下载安装torch-geometric
pip install torch-geometric==1.5.0
这个版本现在是到2.2.0但是很多代码在新版本并不兼容,可以根据需要选择合适的版本。
只要前面的torch-cluster,torch-scatter,torch-sparse,torch-spline-conv四个包和torch版本对应没有问题,torch-geometric选择1.x和2.x版本都是可以的。
如果想要更换版本,无需删除之前的包,直接使用pip install 新的覆盖即可。
附加:跑项目时出现的一个小bug
from torch._six import container_abcs, string_classes, int_classes
ImportError: cannot import name 'container_abcs' from 'torch._six' (/home/jhx/.conda/envs/jhx/lib/python3.9/site-packages/torch/_six.py)
这个就是因为torch版本过高的原因。在torch1.7中对_six.py进行了删减,可以在源码文件中手动添加一下内容,进行修补。
import collections.abc as container_abcs
int_classes = int
string_classes = str