在python中,如果一台主机的项目过多,各项目之间的python库可能会产生冲突,比如它们要求的某第三方库版本不同,这时候就需要python环境管理系统,让各项目在不同的python环境下运行,互不干扰。这里介绍两种常用的python环境管理工具,virtualenv与conda。
一、virtualenv
0x01 virtualenv安装
yum -y install python-virtualenv
或pip3 install virtualenv
virtualenv --version
经过验证通过pip安装的virtualenv版本要高一些,有些命令也存在变化,可通过virtualenv -h
查看用法。
0x02 virtualenv虚拟环境设置
virtualenv的虚拟环境是基于系统本身已经安装的python环境进行虚拟,所以如果系统未安装python3,那virtualenv无法虚拟出python3环境。
[root@localhost ~]# mkdir myproject #创建运行虚拟环境的目录
[root@localhost ~]# cd myproject/ #进入该目录
[root@localhost myproject]# virtualenv -p /usr/bin/python2.7 venv #-p表示指定python解析器版本,后面接指定python版本的安装路径,venv表示把该虚拟环境命名为venv
[root@localhost myproject]# source venv/bin/activate #激活命名为venv的虚拟环境,该虚拟环境的python版本即为指定的版本,当出现虚拟环境名称在前面时即表明激活环境成功
(venv) [root@localhost myproject]# deactivate #表示退出venv虚拟化环境
接下来在虚拟环境中安装requests库测试一下是否影响基础的python库。
(venv) [root@localhost myproject]# pip install requests
(venv) [root@localhost myproject]# deactivate #表示退出虚拟环境
[root@localhost myproject]# python 进入系统基础python,然后import requests,提示`No module named requests`,说明在venv虚拟环境安装的requests库并没有影响基础环境的python库,达到了各环境隔离的作用。
那么venv虚拟环境安装的requests库去哪里了?实际上就在/root/myproject/venv/lib/python2.7/site-packages
中,即virtualenv建立的venv虚拟环境目录下。
二、conda
Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 Conda与virtualenv的区别在于,conda可以创建系统基础没有的python版本环境,同时又具有pip相关的功能,是pip和virtualenv的结合。
0x03 conda安装
conda的安装包分为anaconda和miniconda,anaconda包含常用包notebook、spyder等开源工具,miniconda则是包含conda的精简版。这里介绍一下miniconda的安装。
安装环境:centos7
miniconda官网地址:https://docs.conda.io/en/latest/miniconda.html
由于官网下载比较慢,可以去清华镜像下载。
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh #在清华镜像中下载最新miniconda
[root@localhost ~]# sh Miniconda3-latest-Linux-x86_64.sh #运行安装脚本,安装提示一路yes下去就安装完成
[root@localhost ~]# cd miniconda3/bin 进行miniconda3安装目录下的bin目录
[root@localhost bin]# source ./activate #启动conda,前面多了(base)就表明启动成功。
(base) [root@localhost ~]# conda deactivate #退出虚拟环境
0x04 conda虚拟环境设置
由于conda使用channel的默认下载地址为国外的,所以需要添加国内镜像源。
添加清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes #从channel中安装包时显示channel的url,这样就可以知道包的安装来源
conda config --show channels #显示所有conda的channel
如果要移除conda某镜像:conda config --remove channels 镜像链接
或者vim vim ~/.condarc
编辑已添加的channel
(base) [root@localhost bin]# conda create -n test_py3 python=3.6 #基于 python3.6 创建一个名为test_py3 的环境
(base) [root@localhost bin]# conda env list #查看创建的虚拟环境
(base) [root@localhost bin]# conda activate test_py3 #激活创建的test_py3环境
(test_py3) [root@localhost bin]# conda deactivate #退出环境
(base) [root@localhost bin]# conda remove -n test_py3 --all #删除建立的虚拟环境
0x05 conda安装包
利用conda安装包与pip类似
conda install -n your_env_name requests #指定虚拟环境安装requests库,如果不-n指定虚拟环境,则安装在当前虚拟环境下
conda list #查看当前虚拟环境安装了哪些包
conda search search_term #搜索安装包
conda install -n your_env_name requests=2.18 #安装指定版本的requests库
conda remove -n your_env_name requests #指定虚拟环境卸载安装包
参考资料:
https://www.jianshu.com/p/edaa744ea47d
https://www.jianshu.com/p/9f80643727ce
https://www.cnblogs.com/liang1101/p/9466109.html