python的虚拟环境介绍
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。这里,就要介绍 virtualenv,一个可以帮助我们管理不同 Python 环境的绝好工具。
virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。
一.什么是虚拟环境(virtual environment)?
虚拟环境是从电脑里分离出来的一个个独立的运行环境,就像一个盒子一样,各个盒子之间互不影响;我们可以在各自的盒子里面做自己的事情,使用自己的资源,这个盒子里面有个资源另外一个盒子可能没有。
二.为什么要用虚拟环境?
当我们在实际开发过程中,有可能会管理不同的多个项目,而每个项目的运行环境不一样,比如一个项目是python2.X的版本,另一个项目是3.X的版本,我们不可能在同一个电脑上来回切换python的版本,太麻烦了;又比如一个项目需要这几个包另一个项目需要那几个包,如果都安装在同一个环境中可能会导致出错,我们这时就需要分开管理了,python2.X的项目给他一个独立的环境,python3.X的版本给他一个独立的环境,这样两种互不影响。
三.python的虚拟环境怎么安装?
两种方式
1:直接使用virtualenv
2:直接使用virtualenvwrapper
方式一:virtualenv
(一)windows环境下
1.通过pip直接安装:
pip install virtualenv (一般直接安装在python库中的lib中)
2.创建一个虚拟环境:
virtualenv test(虚拟环境的名字)
3.进入到虚拟环境的Scripts文件夹中(根据自己的路径来进入):
cd ... test | cd Scripts
4.激活虚拟环境:
activate
5.然后就可以在这个虚拟环境中下载需要的包了
6.退出虚拟环境:
deactivate
注意:如果我们的电脑同时安装了python2.X的和python3.X的,那个的环境变量在前面就用那个python,如果要指定python的版本则:
virtualenv -p C:python3.6\python.exe [virtualenv name]
(二)linux环境下
#指定清华源下载pip的包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
#升级pip工具
pip3 install --upgrade pip
#1.安装virtualenv
pip3 install virtualenv
#2.创建目录
mkdir Myproject
cd Myproject
#3.创建独立运行环境-命名
virtualenv --no-site-packages --python=python3 venv#得到独立第三方包的环境,并且指定解释器是python3
#4.进入虚拟环境
source venv/bin/activate#此时进入虚拟环境(venv)Myproject
#5.安装第三方包
(venv)Myproject: pip3 install django==1.9.8
#此时pip的包都会安装到venv环境下,venv是针对Myproject创建的
#6.退出venv环境
deactivate #命令
#7.virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
方式二:virtualenvwrapper
(一)windows环境下
1.安装virtualenvwrapper:
pip install virtualenvwrapper-win
2.创建虚拟环境:
mkvirtualenv test(指定python版本来创建虚拟环境:mkvirtualenv --python==C:\Python\Pypython37\python.exe test)
3.切换到某个虚拟环境:
workon test01
4.退出当前虚拟环境:
deactivate
5.删除某个虚拟环境:
rmvirtualenv test
6.列出所有的虚拟环境:
lsvirtualenv
7.进入到虚拟环境所在的目录:
cdvirtualenv
8.指定python版本来创建虚拟环境:
mkvirtualenv --python==H:\python2\python.exe flask-test
修改virtualenv的默认路径:1在系统变量中添加新的变量:变量名:WORKON_HOME;变量值:H:\Env (自己设置的路径),那么之后所创建的虚拟环境都在这个目录下面了。
(二)linux环境下
#步骤1:安装virtualenvwrapper
pip3 install virtualenvwrapper
#步骤2:设置Linux的环境变量,每次启动就加载virtualenvwrapper
vim ~/.bashrc
#把下面两行代码添加到 ~/.bashrc(针对于当前用户)文件中 或 /etc/profile(针对于所有的用户)
#写入如下内容:
export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #指定python解释器
source /opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
#读取文件,使得生效,此时已经可以使用virtalenvwrapper
source ~/.bashrc
#步骤3:基本使用virtualenvwrapper
#创建一个虚拟环境:
$ mkvirtualenv my_django115 #这会在 ~/Envs 中创建 my_django115 文件夹。
#在虚拟环境上工作:激活虚拟环境my_django115
$ workon my_django115
#再创建一个新的虚拟环境
$ mkvirtualenv my_django2
#virtualenvwrapper 提供环境名字的tab补全功能。
#当有很多环境, 并且很难记住它们的名字时,这就显得很有用。
#workon还可以任意停止你当前的环境,可以在多个虚拟环境中来回切换
workon django1.15
workon django2.0
#也可以手动停止虚拟环境
deactivate
#删除虚拟环境,需要先退出虚拟环境
rmvirtualenv my_django115
#步骤4:常用其他命令
lsvirtualenv #列举所有的环境。
cdvirtualenv #导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。
cdsitepackages #和上面的类似,但是是直接进入到 site-packages 目录中。
lssitepackages #显示 site-packages 目录中的内容。
#完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
四.如何确保开发环境的一致性?
假设我们在本地开发环境,准备好了项目+依赖包环境,现在需要将项目上传至服务器,上线发布。
那么就要保证服务器的python环境一致性。
解决方案:
#1.通过命令保证环境的一致性,导出当前python环境的包
pip3 freeze > requirements.txt
#这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表
#2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖
pip3 install -r requirements.txt