背景
在安装一个新的包的时候报上述错误:
conda install pytorch-lightning -c conda-forge
我试过,安装中文分词的包,不会错误,
conda install jieba
也就是说,是上面那个包的问题。
原因
0.查找了一些资料,一些人说的解决方案都是什么鬼,大多适应性很小或者没用。
1.上述错误不是网速问题!!
上面的关键词是: environment。
我个人理解是:其实就是在说,你现在安装的包,其所依赖的环境有点难解决。什么叫难解决,比如现在这个包依赖很多包,然后这些被依赖的包版本都不满足要求,有的可能需要更新,有的可能你又安装过高了,需要安装更低版本,但是如果你安装更低版本,依赖这个包的一些包又会不舒服。
总之,这样就会很麻烦。
解决方案
我以前很不屑于建立虚拟环境,因为在不同的虚拟环境里面可能会有不同版本的包,这显然浪费我内存,本来我就一个包,任何项目都用这个,现在是多个项目多个虚拟环境,太浪费了。
但是现在恐怕不得不臣服了,对于上面这种情况,还是老老实实使用虚拟环境吧。大不了,学习完这个项目删除这个环境即可。
而且,也不一定就是多个项目多个虚拟环境。比如这次踩坑了,创建了这个虚拟环境,不要删除,此时我们有两个环境,下次又来了一个新项目,先看一下这两个环境能不能满足,如果可以满足,我们就不用创建新的虚拟环境了。
所以,从这个角度来说,虚拟环境也挺好的。
我上面是安装pytorch-lightning报错了,所以我们创建一个虚拟环境,并且取一个好听的名字,从而我们以后就能够记住,如果新项目里面需要pytorch-lightning这个包,我们就使用这个环境。
conda create --name pytorch-lightning
然后我们如果要使用这个环境,那么我们就激活他,那么,当前就会默认使用这个环境。
conda activate pytorch-lightning
#conda deactivate
#上面这个会直接停用当前的虚拟环境,然后进入那个最一般的环境。
进入了这个环境之后,我们就可以开始安装我们的pytorch-lightning了。
conda install pytorch-lightning -c conda-forge
然后,再也不报错了,但是如我前面所说,虚拟环境中很多包因为版本问题都会重新安装过,呜呜呜,好几个G,显然有点浪费我们的空间了。
不过,前面说了,这种报错其实出现得不多,并不是每一个新项目都要安装虚拟环境,没准下次新项目这个虚拟环境还能用呢!
对了,温馨提示,由于上述好几个G,所以最好不用
-c conda-forge
而是使用国内镜像,国外的怕会很慢。怎么设置国内镜像可以参考我以前博客,然后只需要
conda install pytorch-lightning
就会默认使用我们设置的镜像。
解决方案2
上面这个解决方案最为稳妥,但是缺点是耗时太久,在网速很好的情况,你的操作以及业务熟练情况下,可能也要一两个小时,否则,很容易半天,一天。
最近,我发现了一条弯路,这个弯路虽然有潜在的风险,但是我觉得可以试一试。
那就是不要适用conda这个包管理器,而是适用pip,这个东西好像不会考虑包之间的兼容性问题。
有人问:用pip安装了这个包之后,由于存在版本不兼容问题,我们导入不会报错嘛?确实有可能,所以说存在风险。但是要知道,一个包通常有很多很多功能,很多很多函数以及类,这里面大部分可能都不存在版本问题,只是少数可能有问题。所以,当你使用这个包的某个函数的时候,还是有很大可能会成功的,不会报错的。