考虑到:①pycharm比Spyder功能全面,②anaconda的环境配置方便,这两个因素,所以想要在pycharm 上引入conda environment,充分利用Anaconda的库函数。
但是pycharm导入Anaconda环境后,运行程序,报错,AssertionError: Torch not compiled with CUDA enabled
报错含义是,在编译torch的时候,CUDA并没有起作用。
但在此之前,我已经成功安装CUDA和Pytorch,并在Anaconda prompt终端下成功进行了检验,我所安装的Pytorch是可以受CUDA支持的。
那么问题在哪里呢???
①回忆之前安装Pytorch(GPU版)的时候,我首先创建了一个虚拟环境,而这个虚拟环境的作用就是隔绝外界操作,相当于构建了一个独立空间。然后,我是在这个虚拟环境内安装的Pytorch(GPU版)。
(安装Pytorch参考文章:https://blog.csdn.net/qq_46941656/article/details/119682944?spm=1001.2014.3001.5501)
②这就意味着,我在Pycharm上引入conda environment,是没有办法使用Pytorch(GPU版)的,因为Pytorch(GPU版)已经被虚拟环境隔离了。
为了确认上述猜想,我需要检查Anaconda prompt 的基本环境中,是否装有Pytorch(GPU版)
经检查,在Anaconda的基本环境中没有安装Pytorch(GPU版),所以Pycharm即使引入了conda environment,也没有办法使用Pytorch(GPU版)
因为意识到Anaconda的基本环境内,没有安装Pytorch(GPU版),导致Pycharm内无法使用CUDA支持的torch,所以我就打算直接在base环境中安装Pytorch(GPU版)。
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
可以看出,在Anaconda的基本环境中,成功安装上Pytorvh(GPU版)
新的错误:Key already registered with the same priority : GroupSpatialSoftmax
错误原因:应该是pycharm的编译环境内,存在多个torch文件,它们在运行程序的优先级上起了冲突
删除Anaconda所安装的Pytorch(GPU版),包括Anaconda基本环境,Pytorch虚拟环境,Anaconda Navigator上所有的Pytorch文件
a.在Anaconda prompt终端下删除Pytorch(GPU版),命令如下
conda remove --name pytorch --all
b.在Pytorch虚拟环境中删除Pytorch(GPU版),命令如下
conda activate pytorch #激活pytorch虚拟环境,此处pytorch指的是当初创建的pytorch虚拟环境名称
conda remove --name pytorch --all #删除虚拟环境内的pytorch(GPU)版
conda deactivate #关闭虚拟环境
c.在Anaconda navigator上删除Pytorch(GPU版)
在Anaconda 的installed范围内,搜索pytorch,去掉勾选,进行删除
删除Pycharm安装的Pytorch(GPU版),命令如下
pip uninstall torch
此时,在Pycharm上运行python程序已经没有优先级冲突问题,但还是没法使用Pytorch,我们需要重新安装Pytorch(GPU版)
将Anaconda和Pycharm中pytorch(GPU版)删除干净后,再进入Anaconda prompt的终端下,重新安装Pytorch(GPU版),命令如下
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
安装完毕后,在Pycharm上再次运行python程序,已经不再报错:AssertionError: Torch not compiled with CUDA enabled。
说明Pycharm可以使用CUDA支持的pytorch了。