前言
一般我们往往会在一个主机上运行多个由别人写的项目,而别人写的项目所用的开发环境又有很大的不同,比如A项目用的是Python3.6,B项目用的是Python3.7。很多时候一个项目必须在特定的环境下才能运行,而我们又不能每次运行一个项目,就把原来的环境给卸载掉,那样就太麻烦了。而且配环境这个过程其实也并不轻松。而且多个项目也不能并行运行,基于此,出现了Anaconda,一个环境管理工具,可以利用Anaconda来管理多个环境,也就是说在一台主机上,同时具有多个环境。每次运行一个新项目就新建一个虚拟环境即可,这样就能轻松解决上述问题。
环境管理
查看系统存在哪些虚拟环境
执行下面的指令,即可看到系统存在的虚拟环境。在安装Anaconda后,会默认有一个名叫base的环境。
conda env list
conda info ‒-envs
这条指令也可以看到各个环境的安装位置信息。默认状况下:在用户.conda\envs目录下存放环境
创建虚拟环境
比如创建一个以test命名的Python环境,执行下面命令:
conda create -n test python=3.7
- n是name的简称,python的版本是3.7,也可以是其他版本
- 如果不特别指定路径,虚拟环境会默认安装在C盘,如果不想安装在C盘,也可以指定安装位置(但是我的电脑用其他博客讲述的方法并没有实践成功)
- 亲测可以使用如下方法来将虚拟环境创建在其他位置
在cmd窗口下切换到待安装位置目录下(默认的安装位置为.conda\envs),如果安装位置有权限限制,就用管理员权限打开cmd
conda create --prefix=test python=3.9
激活虚拟环境
创建好虚拟环境以后,如何进入该虚拟环境?
在命令行窗口输入以下指令进入该虚拟环境test。该指令的字面意思是使用conda的方法激活activate环境test
conda activate test
退出虚拟环境
conda deactivate
删除虚拟环境
conda remove -n 环境名字 --all
环境的导入与导出
当我们去复现项目的时候,或者批量将项目运行在多个主机时,为了方便进行环境部署,最好能一键部署。就能大大减轻工作量,因为环境配置这个工作是很繁琐的。接下来我将用一个例子来演示。
假设我在虚拟环境1上运行了一个项目1,导出项目所用的环境,然后在虚拟环境2上导入该环境,并部署项目1
- 进入虚拟环境1
- 切换到项目根目录
- 执行下面的指令,导出环境。requirements.txt的格式大概如下图所示
pip freeze > requirements.txt
- requirements.txt的格式大概如下图所示
- 切换到虚拟环境2
- 将requirements.txt文件放到项目2的根目录下
- 执行下面的命令,导入环境。然后就会自动配置环境
pip install -r requirements.txt
注意这个方法,在安装pytorch的时候默认安装的cpu版本
包管理
查看该环境下安装了哪些包package
首先切换到该环境下,具体方法看上文
conda list
或者
pip list
安装包
一般在安装Anaconda后,在创建虚拟环境的时候,会默认安装一些必要的包
pip/conda install 包名,比如安装numpy包
pip install numpy
如果要安装指定版本的包:pip install 包名==版本号
查看安装的包的版本
包名.__version__
,比如查看numpy包的版本
更新包
- pip/conda install --upgrade <包名>:升级指定的Python包。
- pip/conda install --upgrade <包名>==<版本号>:升级到指定版本的Python包
比如将numpy包升级到1.24.3版本
pip install --upgrade numpy==1.24.3
卸载包
pip install 包名
conda remove 包名称
包默认安装位置
.conda/envs/环境名字/Lib/site-package
包/环境管理工具pip/conda
pip和conda都是包管理工具,大多数情况下,二者区别不大。pip是Python官方指定的包管理工具,也可以理解为一种特殊的包,一般会默认安装。有时候如果pip命令安装失败,也可能是pip版本过低导致,可以尝试升级pip版本重新安装。一般情况下,如果是默认下载源,使用pip命令下载包会从官方指定的仓库PYPI下载,如果因为国内网速原因下载速度过慢,也可以变更下载源,比如将国外PYPI仓库改为国内的清华或阿里云等镜像下载地址。具体更改下载源的方法可以在网上搜索,很容易搜到。而conda指令所下载的包来源于Anaconda仓库,这是由Anaconda公司维护的一个官方软件包仓库,包含了大量的常用Python包。conda会优先从Anaconda仓库下载包,如果在该仓库中找不到对应的包,才会从其他仓库下载。我个人更多的时候用pip。