Centos7 python虚拟环境virtualenv和virtualenvwrapper简单介绍
我的系统版本是
[root@localhost ~]# cat /etc/os-release
我的Python版本是
[root@localhost ~]# python3 -V
关于如何安装Python请看我的django环境搭建的博客https://www.cnblogs.com/caesar-id/p/10791791.html
下面我们来开始搭建基于Python3.6.2版本的虚拟环境virtualenv:
1、由于Centos自带的yum源下载软件比较慢,这里我们使用国内阿里的yum源。
备份系统自带的yun源
[root@localhost ~]# mkdir /etc/yum.repos.d/backup [root@localhost ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/backup/
我们到阿里的镜像站https://opsx.alibaba.com/mirror选择一个合适的yum源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@localhost ~]# yum clean all # 清除原来的yum缓存 [root@localhost ~]# yum makecache # 生成新的缓存
163源:http://mirrors.163.com/.help/centos.html
中科大源:https://lug.ustc.edu.cn/wiki/mirrors/help/centos
2、安装Python3的虚拟模块virtualenv
[root@localhost ~]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
安装后使用pip3 list进行查看
3、创建virtualenv虚拟环境
[root@localhost opt]#cd /opt
[root@localhost opt]# virtualenv --no-site-packages --python=python3 env_1
--no-site-packages:表示使用一个只有Python3的环境,而不导入原来Python3中安装模块。
--python=python3:指定要被虚拟的解释器环境。
env_1:表示虚拟的Python环境目录。
4、创建好虚拟环境后,需要激活虚拟目录
[root@localhost opt]# source env_1/bin/activate # 激活虚拟目录
激活成功后我们发现原来的路径前出现了虚拟环境的目录,这样我们便成功激活并进入到了虚拟环境中。
我们来看下env_1的虚拟目录下都有哪些文件
我们在看看bin目录下都有什么
查看下pip3命令
我们可以发现现在的Python环境全部都是env_1下的Python环境。在来查看下当前虚拟环境是否是纯净的Python环境
虚拟环境只有纯净的Python环境,没有掺杂系统原本安装的模块,也许你现在还没有发现他的魅力所在,下面我们开始吧。
5、在env_1的虚拟环境下安装django1.11.20
(env_1) [root@localhost opt]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.20
安装好后我们使用pip3 list查看下
安装成功后,我们创建一个django项目django_1
(env_1) [root@localhost opt]# django-admin startproject django_1
(env_1) [root@localhost opt]# vim django_1/django_1/settings.py # 修改配置文件允许其它主机可以访问
启动django项目
(env_1) [root@localhost opt]# python3 django_1/manage.py runserver 0.0.0.0:8000
访问django项目前,我们需要暂时清空本机的防火墙规则,或者暂时关闭防火墙,否则在访问本机8000端口时会被防火墙拒之门外的,我们新开一个shell。
[root@localhost opt]#iptables -F # 清空防火墙规则
[root@localhost ~]# systemctl stop firewalld.service # 也可以暂时关闭防火墙
如果上面一切顺利的话,我们将看到如下界面。
6、下面我们在创建个虚拟环境env_2(注意:你需要另开一个新shell来创建虚拟环境env_2)
[root@localhost ~]# virtualenv --no-site-packages --python=python3 env_2
7、激活虚拟环境
[root@localhost ~]# source env_2/bin/activate
此时我们在看下pip3和python3
可以发现是env_2下的Python3和pip3,在来查看下pip list
发现还是纯净的Python环境,virtualenv正逐渐的向我们展示它强大的一面。下面我们在env_2中安装django2.0
8、安装django2.0
(env_2) [root@localhost ~]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==2.0
9、创建django2.0的项目
(env_2) [root@localhost ~]# django-admin startproject django_2
(env_2) [root@localhost ~]# vim django_2/django_2/settings.py
10、启动django2.0项目
(env_2) [root@localhost ~]# python3 django_2/manage.py runserver 0.0.0.0:9000
11、访问django2.0项目
这样我们便实现了在一个操作系统上同时运行django1.0和django2.0两个环境,也许你可能觉得这还不够,还有更多的功能等待我们去探索。
12、好了既然可以运行虚拟环境,下面我们来看看如何退出虚拟环境。其实很简单,如下:
(env_2) [root@localhost ~]# deactivate # 退出虚拟环境
我们都知道Linux一切皆文件,所以如果想要删除虚拟环境只需rm -r env_1把虚拟环境的文件夹删掉即可,好了virtualenv我们就简单介绍到这里。
如果想要了解更多功能,请访问virtualenv官网https://virtualenv.pypa.io/en/latest/
virtualenv
虽然功能很好用,但是有一个最大的缺点就是每次开启虚拟环境之前要去虚拟环境所在目录下的 bin
目录下 source
一下 activate
,这就需要我们记住每个虚拟环境所在的目录。
并且还有可能你忘记了虚拟环境放在哪以及该虚拟环境对应哪个项目。一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。但即使这样在项目多的时候貌似也不是很方便,于是virtualenvwrapper便站了出来要解决这个问题,下面我们简单了解下virtualenvwrapper的使用。
1、安装virtualenvwrapper
[root@localhost ~]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper
安装成功后看起来像下面这个样子:
2、安装成功后,设置开机启动。
我们可以在/etc/profile中设置开机自启动,这样的话会影响系统所有用户,也可以在用户家目录下~/.bash_profile针对某个用户进行设置。
这里我们针对root用户进行设置。
[root@localhost ~]# vim ~/.bash_profile # 在配置文件的末尾我们添加如下配置
[root@localhost ~]# source ~/.bash_profile # 使文件立即生效
3、我们在开一个shell登陆root,创建虚拟环境
[root@localhost Envs]# mkvirtualenv env_django_1
使用pip3 list 查看一下:
下面的使用就和virtualenv类似了,这里不再重复。退出虚拟环境和virtualenv一样
(env_django_1) [root@localhost Envs]# deactivate # 退出虚拟环境
4、激活工作目录和virtualenv不同,使用workon
[root@localhost Envs]# workon env_django_1 # 激活虚拟环境
5、查看有哪些虚拟环境
[root@localhost Envs]# lsvirtualenv
6、删除虚拟环境
[root@localhost Envs]# rmvirtualenv env_django_1
跟多有趣的内容请看官方文档:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html