这两天安装完pytorch之后调用 torch.cuda.is_available()一直返回false,看到大部分博主都提出了重新安装或更新cuda版本的方法。然而我在跟着操作之后问题并没有解决(此时我cuda和pytorch的安装都正常),而且在操作过程中一度出现了重装pytorch后连 import torch都失败的情况。下面是我解决问题的流程和总结的可能原因。
1、模组typing_extensions的版本过低不兼容
当我重装pytorch后在pycharm里调用 torch.cuda.is_available()返回了一个
conda-script.py: error: unrecognized arguments: --no-capture-output
的报错,查阅资料未发现相同情况的报错,无果,因此在shell终端中用python逐条输入 import torch和torch.cuda.is_available()看看详细问题,然而输入import torch后就出来了一个
No module named 'typing_extensions'
的报错。于是上网查报错原因,发现需要涉及到相关源代码的修改,此时感觉有点不对劲,我不过是安装一个库怎么要这么麻烦,遂直接uninstall这个typing_extensions再重新install,之后发现问题所在了。
原来我之前用conda list调出来发现我的typing_extensions版本为4.4,重装之后现在的版本是4.9,莫非是不兼容的原因?总之这个问题解决了,运行一下看看。
2、新创建的虚拟环境中缺少最新版本的numpy和pandas
上一个问题解决之后继续运行import torch,这时候又有新的报错了:
module 'numpy' has no attribute 'ndarray'
我一看这我熟啊,numpy和pandas版本不匹配导致的错误,我再一看我虚拟环境的conda list里居然只有numpy没有pandas一下就恍然大悟了,遂重装numpy与pandas,再运行代码,返回true。
3、pycharm内解释器使用错误与多余重复安装包
在shell终端成功了,于是我重新建了一个项目,运行代码后却仍然返回false,仔细一看,原来是因为我新建的pycharm项目用的解释器不是我虚拟环境目录中的python.exe,调整过后成功返回true(顺便吐槽一句,网上大部分的pycharm教学用的都是旧版本的pycharm,新版调整后很多ui都不一样,新版使用时有的时候都找不到旧版的按钮)
需要注意的是,在pycharm内部仍然可以在解释器界面安装pytorch和torch,看个人用途选择安装方式吧。