文章目录
前言
在某些python的开发项目中,或跑一些demo,例如tensorflow的demo,要求python3.5以上的版本,若原系统环境只有python2.7.5,显然无法满足测试环境。若为系统安装python3.5+,有些库又会造成版本冲突,因此需要使用python的虚拟环境工具来解决这些矛盾。当然也可采用python的docker镜像,使用一个镜像独立环境运行项目,但相比于python虚拟化工具来说,这种docker镜像显得有点重。
1、python虚拟工具介绍
目前有几种方式创建python的虚拟环境,在python3中有标准库venv,而第三方库例如virtualenv、virtualenvwrapper、pyenv,那么在项目或者说在实际开发里面,选哪种工具更为适合?
1.1 virtualenv
virtualenv 是目前较为常用的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器(要求系统已经安装了不同版本的python),并选择不继承基础版本的site-packages。
1.2 virtualenvwrapper
virtualenvwrapper是virtualenv的一个封装,目的是使后者更好用。virtualenv在使用中,每次得去虚拟环境所在目录下的 bin 目录下 source activate,也即当有多个虚拟环境时,得每次都去找对应的目录,virtualenvwrapper将所有的虚拟环境目录全都集中起来统一管理,避免每次开启虚拟环境时候的source 项目目录操作。
1.3 venv
Python 从3.3 版本开始,自带了一个虚拟环境 venv,在 PEP-405 中可以看到它的详细介绍。它的很多操作都和 virtualenv 类似。也支持linux和win。venv也有局限性,例如当前系统python版本为3.5,那么venv只能在当前安装的python3.5版本,不能创建其它Python 3.x的版本以及Python 2的环境。
1.4 pyenv
pyenv
主要用来安装、管理Python的版本及其虚拟环境,比如一个项目需要Python2.x,一个项目需要Python3.x。而virtualenv主要用来管理Python包的依赖。不同项目需要依赖的包版本不同,则需要使用虚拟环境。pyenv
通过系统修改环境变量来实现Python不同版本的切换。前面的三个工具都是用于虚拟环境切换,pyenv是 Python 版本环境切换工具,将这两套工具结合使用,可以完美解决 python 多版本环境的问题。具体实例在第4节给出。
2、使用virtualenv创建和管理虚拟环境
2.1 为多个python版本安装相应的pip
centos7.5默认没有pip包,因此需求手动安装,本文系统已经安装python2.7和python3.6。这里给出python2.7的pip安装和python3.6的pip3安装。
pip安装依赖setuptools,首先为python2和python3安装相应setuptools
[root@localhost local]# pwd
/usr/local
[root@localhost local]# wget https://files.pythonhosted.org/packages/ab/41/ab6ae1937191de0c9cbc115d0e91e335f268aa1cd85524c86e5970fdb68a/setuptools-42.0.0.zip
[root@localhost local]# unzip setuptools-42.0.0.zip
[root@localhost local] cd setuptools-42.0.0
# 注意这里的python命令是连接到python2.7,所以setuptools库只在python2.7环境生效
[root@localhost setuptools-42.0.0]# python2.7 setup.py install
# 给python3.6安装setuptools
[root@localhost setuptools-42.0.0]# python3.6 setup.py install
这里为何使用python2.7或者python3.6,因为如果想要构建更多python版本,其shell执行命令例如python3.5,python3.7则会显得清晰而不混乱。
为python2和python3安装相应pip,跟setuptools安装流程一致。
[root@localhost local]# pwd
/usr/local
[root@localhost local] wget https://files.pythonhosted.org/packages/ce/ea/9b445176a65ae4ba22dce1d93e4b5fe182f953df71a145f557cffaffc1bf/pip-19.3.1.tar.gz
[root@localhost local]# unzip pip-19.3.1.tar.gz
[root@localhost local] cd pip-19.3.1
# 为python2.7 安装pip,最终命令执行路径在:/usr/local/bin/pip
[root@localhost pip-19.3.1] python2.7 setup.py install
# 为pytho3.6 安装pip,最终命令执行路径:/usr/local/bin/pip3
[root@localhost pip-19.3.1] python3.6 setup.py install
2.2 安装virtualenv
上面已经配置了python2.7环境和python3.6环境,virtualenv库无需在两种环境安装,这里安装到python2.7库下即可。
这里要注意:如果系统已经安装python3版本,且shell已经设定python命令是软链接到python3