太长不看版!!
直接执行conda deactivate
。然后再激活你的环境!!解决!!只要前面没有base!
正文
最近安装pytorch,明明在conda list 可以看到torch已经安装上了。
可以看到是安装上的,但是!
提示
Traceback (most recent call last):
File "setup.py", line 7, in <module>
import torch
ModuleNotFoundError: No module named 'torch'
我开始一直以为是没安装上,无数次的删除环境,新建环境,折腾了两周。就差重装系统了。。
其实并不是没安装上,往后看。
1。搭梯子去外网下载。同样错误。
2。离线安装。同样错误。
3。pytorch官网命令下载。
pip命令
pip install torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
conda命令
conda install pytorch torchvision torchaudio cpuonly -c pytorch
同样错误。
直到!我偶然之中查看了一下python版本!
我明明安装的是3.7.9!!!但是输出的却是3.8.3(这应该是默认的conda的python版本)。
查看一下我创建的环境的python版本。
明明是3.7.9但是输出的却是3.8.3。
所以这下问题知道了,不是pytorc安装不上去,是我们的环境没切换过来。
花了两周的时间,才发现一个这么坑的问题。。。
既然已经知道我们的问题是啥那接下来就知道怎么办了。
首先尝试把这个问题复现一下。
激活环境。注意这里我们用的是conda 命令。
可以看到我们输出python环境后,是3.8.3!!!。所以我们可以知道并没有激活环境。但是前面的名字已经变了。之前就是一直被这个欺骗了。
我们用conda 不行,用source试试。
也不行。
我们尝试使用deactivate先关闭再打开。
额,还是不行。哈哈哈哈。
继续。尝试无果。
现在我们知道不论是conda还是source都没有切换成功python即使我们看到python是3.7.9。
即使我们已经在创建的环境目录下。
如下。
查看python,pip的位置。均在我们的环境里。
但,都是假的!!!!
不知道别人如何解决的。
给出我的解决方案。
1.用source。依次执行以下命令。
source deactivate ~~MEGA~~ (你的环境名称)
source activate ~~MEGA~~
这个之前成功了。但是后面又失败了。
2.第一步如果失败,继续执行deactivate。
如下。
我们发现,退出MEGA环境后到了base!按理说base和MEGA是互不相关的。即退出应该为如下。
前面是没有(base)的!
所以这下我们明白了。
我们的MEGA创建在了base里面!!!
后来想了想,不是创建在base里面。否则的话,按照逻辑来说,我们激活MEGA环境时候肯定还是会把base激活。根本原因还是在base下切换环境失败。可能是ubuntu16.04的bug。
因为我们打开终端的时候前面默认是base!!!
如下。
我之前一直都是这样创建环境的。。。。汗。这相当于在根环境中创建了一个环境!!!windows就不会这样。这真的是一个防不胜防的坑啊。
但是我们输出环境。
我们看到两个环境是独立的!
而且我们前面在没有base的时候查看list。
可以看到确实是两个环境。
但是为什么环境就是切换不成功呢!!!!
我们退到最外层。
我们把这句语句再执行一遍。
然后我们使用source激活。成功。输出的是3.7.9。
我们再试一下conda。
我们发现base环境退不出来。
只能使用已经丢弃的命令。source关闭环境。
然后激活。
成功!
后续。
我们尝试退出base。
失败。
尝试不加base。
成功!!!
总结
所以这下我们知道了,在base下切换环境并没有成功,python版本没有变。我们必须退回到这里!
之后再激活环境!
ubuntu的坑啊!也可能是conda的问题。浪费快两周时间。不知道18和20版本有没有解决这个问题。