聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

Python最佳实践之virtualenv

2016-08-22 04:15 浏览: 1890922 次 我要评论(0 条) 字号:

virtualenv是一个能把你的应用隔离在一个虚拟环境中的工具。 一个虚拟环境是一个包含了你的应用依赖的软件的文件夹。简单的描述virtualenv的作用:

  • virtualenv可以让你给不同的项目指定同样的依赖包的不同版本。
  • virtualenv可以让你方便的在多台服务器上部署相同的以来环境。

virtualenv的安装非常简单,只需

pip install virtualenv
 即可。

一、如何使用virtualenv构建独立的虚拟环境?

1、virtualenv的安装

pip install virtualenv

2、创建虚拟环境

首先到使用命令行移动到想要存在虚拟环境的文件夹,然后执行:

D:>mkdir myenv

D:>cd myenv

D:myenv>virtualenv venv
New python executable in D:myenvvenvScriptspython.exe
D:myenvvenvInstalling setuptools, pip, wheel...Collecting setuptools
  Downloading http://mirrors.aliyun.com/pypi/packages/cd/48/45dee63e94368e331cfd8d90d1e804e8ad0c0d055e677ef2c1317de863e1/setuptools-25.4.0-py2.py3-none-any.whl (459kB)
Collecting pip
Collecting wheel
Installing collected packages: setuptools, pip, wheel
Successfully installed pip-8.1.2 setuptools-25.4.0 wheel-0.29.0
done.

其中myenv是存在所有虚拟环境的文件夹,在执行完命令后就myenv的文件夹下就生成了一个venv的文件夹,这个文件夹即为本次生成的虚拟环境。

3、激活虚拟环境

Linux环境下可以通过如下命令激活:

source venv/bin/activate

而Windows下的激活命令是:

venvScriptsactivate

你也许注意到了,你的shell提示符发生了改变。 virtualenv在它前面添加了当前被激活的virtual environment,所以你能意识到你并不存在于全局系统环境中。

D:myenv>venvScriptsactivate

(venv) D:myenv>

当一个virtual environment被激活后,在虚拟环境下使用pip安装的包都会安装到virtual environment中而不是全局系统环境。

如果你想离开virtual environment,在命令行中执行deactivate即可:

(venv) D:myenv>deactivate
D:myenv>

二、如何迁移virtualenv构建独立的虚拟环境?

比如说想把开发环境迁移到线上环境,方法非常的简单:

1、生成目前所在虚拟环境的所有依赖包信息

(venv) D:myenv>pip freeze > requirements.txt
aniso8601==1.1.0
click==6.6
Flask==0.11.1
Flask-Admin==1.4.2
Flask-Login==0.3.2
Flask-OAuth==0.12
Flask-RESTful==0.3.5
Flask-SQLAlchemy==2.1
Flask-WTF==0.12
httplib2==0.9.2
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
oauth2==1.9.0.post1
python-dateutil==2.5.3
pytz==2016.6.1
requests==2.11.1
six==1.10.0
SQLAlchemy==1.0.14
Werkzeug==0.11.10
WTForms==2.1

同时会在刚在命令行所在的目录下生成一个requirements.txt文件,文件中的内容和上述返回的内容一致。

2、在新的服务器的虚拟环境中批量安装requirements.txt的包。

pip install -r requirements.txt

随着项目增长,你可能会发现pip freeze中列出的每一个包并不再是运行应用所必须的了。 也许有些包只是在开发时用得上。pip freeze没有判断力;它只是列出了当前安装的所有的包。所以你只能手动记录依赖的变动了。 你可以把运行应用所需的包和开发应用所需的包分别放入对应的require_run.txt和require_dev.txt。

注意:在freeze或install依赖包时,确保你正为于正确的virtual environment之中。

三、使用virtualenvwrapper更加方便的管理虚拟环境

Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:

  • 将所有虚拟环境整合在一个目录下
  • 管理(新增,删除,复制)虚拟环境
  • 切换虚拟环境

在安装Virtaulenvwrapper之前,首先要确保已经安装了virtualenv。

Linux下安装命令:

pip install virtualenvwrapper

安装完成后并不能直接使用virtualenvwrapper,还需要进一步进行环境设置:

创建目录用来存放虚拟环境:

mkdir $HOME/Envs

编辑 ~/.bashrc,在文件最后追加如下内容:

export WORKON_HOME=$HOME/Envs
source /usr/local/bin/virtualenvwrapper.sh

运行:

$ source ~/.bashrc
 保存配置信息。此时virtualenvwrapper就可以使用了。virtualenvwrapper的基本使用方式:

  • 列出虚拟环境列表:
    workon 或者 lsvirtualenv
  • 新建虚拟环境: 
    mkvirtualenv [虚拟环境名称]
  • 启动/切换虚拟环境:
    workon [虚拟环境名称]
  • 删除虚拟环境:
    rmvirtualenv [虚拟环境名称]
  • 离开虚拟环境:
    deactivate

Windows下安装命令:

pip install virtualenvwrapper-win

参考链接:



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复