一 virtualenv简介
virtualenv------用来建立一个虚拟的python环境,一个专属于项目的python环境。用virtualenv 来保持一个干净的环境非常有用
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip
安装到Python3的site-packages
目录下。
如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
二 基本使用
1 安装方式
通过pip安装virtualenv:
pip install virtualenv
为一个工程项目搭建一个虚拟环境:
cd my_project
virtualenv --no-site-packages --python=python3 venvName # 得到独立第三方包的环境,并且指定解释器是python3
# 注意如果提示找不到virtualenv需要先执行一下以下命令:
[root@dc Python3] /usr/bin/easy_install virtualenv
要开始使用虚拟环境,其需要被激活:
source my_project_env/bin/activate
停用虚拟环境:
deactivate
停用后将回到系统默认的Python解释器
2 查看已安装包
用pip freeze查看当前安装的python包
pip freeze
这将会创建一个 requirements.txt
文件,其中包含了当前环境中所有包及 各自的版本的简单列表
pip freeze > requirements.txt
安装requirements文件中的包
pip install -r requirements.txt
三 虚拟环境之virtualenvwrapper
virtualenv
的一个最大的缺点就是:
每次开启虚拟环境之前要去虚拟环境所在目录下的 bin
目录下 source
一下 activate
,这就需要我们记住每个虚拟环境所在的目录。
并且还有可能你忘记了虚拟环境放在哪,使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。
1 安装virtualenvwrapper
pip3 install virtualenvwrapper
2 设置Linux的环境变量,每次启动就加载virtualenvwrapper
把下面两行代码添加到 ~/.bashrc文件中 打开文件 vim ~/.bashrc 写入以下两行代码 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 my_django115 workon my_django2 也可以手动停止虚拟环境 deactivate 删除虚拟环境,需要先退出虚拟环境 rmvirtualenv my_django115
4 常用其他命令
lsvirtualenv 列举所有的环境。 cdvirtualenv 导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。 cdsitepackages 和上面的类似,但是是直接进入到 site-packages 目录中。 lssitepackages 显示 site-packages 目录中的内容。 完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html