今天把python脚本和部署文档给测试组部署时候,发现他们对于conda和pip的使用不够清晰,同时环境和依赖常出现安装版本错误等问题现从下面几个方面介绍下相关使用:
一、anaconda的基本使用
1、通常,在conda环境中,我们用下面命令新建自己的环境:
conda create -n your_env_name python=X.X (2.7、3.6等)
2、查看有哪些conda环境:
conda env list 或 conda info -e
3、使用下面命令切换到该环境:(如果没有加环境变量这些,没有成功的话,进入anaconda的/bin目录下,此处有activate,进入后执行命令)
source activate your_env_name(虚拟环境名称)
4、使用下面命令查看环境中的包:
conda list
5、一般使用下面命令来装包:
conda install -n your_env_name [package]
(或者进入环境直接conda install [package] 即可,eg: conda install tensorflow)
6、当我们安装的包在conda中没有时,需要用pip安装
(注意此处有坑,下文细说),正常情况下,我们只需进入环境后,运行
pip install [package]
eg :pip install tensorflow
7、删除某包:
conda remove --name your_env_name [package_name]
同理进入环境后直接 conda remove [package]即可 ,eg : conda remove numpy
8、关闭虚拟环境:
source deactivate
9、删除虚拟环境
conda remove -n your_env_name(虚拟环境名称) --all
二、为什么anaconda环境中,还需要用pip安装包,此情况下用pip需要哪些注意项
1、在anaconda下用pip装包的原因:尽管在anaconda下我们可以很方便的使用conda install来安装我们需要的依赖,但是anaconda本身只提供部分包,远没有pip提供的包多,有时conda无法安装我们需要的包,我们需要用pip将其装到conda环境里。
2、用pip装包时候需要哪些注意事项?
2.1 首先,我们需要判断目前我们用的pip指令,会把包装到哪里,通常情况下,pip不像conda一样,他不知道环境,我们首先要确保我们用的是本环境的pip,这样pip install时,包才会创建到本环境中,不然包会创建到base环境,供各个不同的其他conda环境共享,此时可能会产生版本冲突问题(不同环境中可能对同一个包的版本要求不同)
用下面命令查看我们此时用的pip为哪个环境:
which -a pip
(如base环境的pip可能在/root/anaconda3/bin/pip,,,,而其他conda环境的pip,可能在/root/anaconda3/envs/my_env/bin/pip)
(经试验,anaconda4.8版本,在conda create新的环境时,已经默认在新环境装了pip,此时source activate进入该环境后,用pip命令安装的包,默认会装在本环境中,不必担心pip一个包后后会将其他环境的包改变版本的情况)
当然我们自己创建的conda环境里,可能没有pip,此时进入自己的conda环境也会默认用base环境的pip,这就需要我们自己将pip安装入本环境,尽量不要使用base的pip在其他环境装包,这样也会装在base里,有产生版本冲突的可能(上文已讲)。在自己conda环境安装pip使用如下命令:
(进入环境后)
conda install pip
安装好本环境的pip之后,在本环境中使用pip install安装的包,就只在本conda中了,我们可以用conda list查看我们的包,同时pip安装的包,conda list结果中的build项目为pypi......
三、安装特定版本的包
conda用“=”,pip用“==”
conda install numpy=1.93 pip install numpy==1.93
让我们用这些技巧,愉快的管理自己的conda环境吧~~