当需要在一个系统中同时使用两个python版本,可以通过创建虚拟环境的方式实现。鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。
1、查看当前系统默认python
[root@centos7_kvm01 ~]# python --version
Python 2.7.5
2、查看py2和py3的目录
以下查询py3和py2的目录:
[root@centos7_kvm01 ~]# which python3.7
/usr/local/bin/python3.7
[root@centos7_kvm01 ~]# which python2.7
/usr/bin/python2.7
二、安装virtualenvwrapper
1、先安装pip
由于直接yum安装会报,找不到包,
需要先安装扩展源EPEL。
EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。
首先安装epel扩展源:
sudo yum -yinstallepel-release
然后再安装pip。yum install python-pip
安装完成后,会提示升级pip:
pip install --upgrade pip
2、安装virtualenvwrapper
pip install virtualenvwrapper
pip install virtualenvwrapper-win #Windows使用该命令
上述工具装好后,需要执行以下环境变量设置。
3、创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
4、在~/.bashrc中添加行:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
5、运行:
source ~/.bashrc
三、创建python虚拟环境
当你需要使用Python2开发项目时,建立一个Python2的虚拟环境:
$ mkvirtualenv -p /usr/bin/python2.7 env27 # -p参数指定Python解释器程序路径或者--python=/usr/bin/python2.7
当你需要Python3开发时:
$ mkvirtualenv -p /usr/bin/python3.7 env37
然后可以随时切换不同的虚拟环境:
$ workon env27 # 进入Python2环境
$ workon env37 # 进入Python3环境
不仅可以自由切换py2和py3,同一个版本下还可以配置不同的依赖,pip不同的包,来适应不同项目的需求。
更爽的是,你可以在进入虚拟环境的同时切换到项目目录,只需要编辑 $VIRTUAL_ENV/bin/postactivate 这个文件即可:
$ vim $VIRTUAL_ENV/bin/postactivate #前提是已经进入对应的虚拟环境
在文件中添加切换目录的命令:
cd /path/to/your/project
四、退出虚拟环境 离开 deactivate
如果要创建一个不带已经安装到系统的中第三方包的环境,可以加上参数 --no-site-packages,这样就可以得到一个不带任何第三方包的干净的python运行环境
命令为
virtualenv --no-site-packages myenv
随后,可以在这个环境下安装各种第三方包,在venv环境下,用pip安装的包都会安装到这个venv环境下,在python环境中不受影响,也就是说,这个venv环境是针对myvenv这个应用单独创建的,
五、py3.7环境下安装 PyMySQL
#workon py3.7
#pip install PyMySQL
#python
#import pymysql
切换到py2.7,import会报错,因为 PyMySQL只安装在了py3.7环境中,对于py2.7是不可见的。