做计算机编程相关的技术比如Python稍微一久点,相信你一定会领略到不同软件包版本兼容的问题。大家都说python是最简单最容易上手,而且还是面向人工智能时代的编程语言,的确,看一些代码和应用实现,Python的确最简单。然而,机智客觉得,我们要知道的是,简单的背后往往是高度复杂化的封装集成;越简单,其背后隐藏的就越多也就越复杂,因此时间一久,你就不可能不触碰背后的东西。一不小心你就会被折腾得抓耳挠腮。说别的就远了,就连我们日常调用的库,就可能把你折腾得抓狂。
看似很简单的接口调用,往往是暗藏杀机,比如我们经常碰到的版本问题。这个很让人迷惑,导致身体的某个部位隐隐发疼。比如你明明通过pip安装了某个模块,可是在import时还是显示,找不到这个模块。比如你安装年A某个模块,然而它提示要求依赖B模块版本在2.XX,而你电脑里的B版本是1.XX。然而不是说你把B模块升级到2.XX就行了。1.XX的B模块依赖于C模块的某个版本。你说你是升还是不升?
这个问题在AI机器学习中更普遍。你找到一个项目,需要你按照torch1.9.0,于是你安装年。然而到了下一个项目,它却只支持torch1.7.0版本。于是你的身体的某个部位又开始隐隐发疼了。瞧啊,版本兼容问题多扯。当然了,机智客觉得我们也要知道,并不是Python语言自己的问题,第三方库和其他框架出这种问题很常见。那么怎么解决版本问题呢?答案就是安装虚拟环境,比如我们本文谈到的conda。也就是一个anaconda搞定。
而这个anaconda的安装我们在以前的文章里介绍过。所以我们重点介绍一下conda的基本使用。如果我们在面对一个新的项目的时候,看到它要求你python版本3.8和torch版本1.7.0。而别的项目未必需要这些版本,我们就可以单独建立一个虚拟环境。
先大致说下conda基本的几个命令。如果你的终端提示符最前面有(base),说明你默认打开了base环境。这是一个新的虚拟环境。如果你没有base,想看下电脑有哪些虚拟环境,可以执行condaenvlist命令。如果想看安装了哪些包,则用condalist命令。更新当前conda则用condaupdateconda命令。
接下来就是新建虚拟环境了,在Ubuntu系统里快捷键打开终端,在里面新疆一个新环境用condacreate-n虚拟环境名python=x.x命令。要激活虚拟环境则是condaactivate虚拟环境名。网上很多资料说用source命令,不过机智客在自己Ubuntu里提示source命令已经废弃,要用conda。同样退出虚拟环境则用condadeactivate环境名。
删除某个虚拟环境则用condaremove-n虚拟环境名--all命令。同样的,安装某个包就用condainstall-nXXX命令,同样删除包就用condaremove-nameXXXXXX(包)这个和pip安装卸载有点不同,pip是pipuninstallXXX。最后一个就是设置国内镜像了,毕竟Anaconda服务器是国外的。设置国内,可以用condaconfig--addchannels