Virtualenv的简单使用
作者信息:
Author : 黄志成
博客地址: 博客
Virtualenv 是什么?
Virtualenv是一个可以创建隔离python环境的工具.
在开发中,某些项目使用的是Django1.9.而有些又是使用的是Django2.0。在这种情况下就尽可能的需要一套独立的python运行环境.
那么遇到上面的问题,Virtualenv就是一个很不错的解决方案.当然你也可以使用Docker这类的工具.
首先我们安装Virtualenv,可以直接通过pip安装
$ pip3 install virtualenv
安装完成后,假定我们需要一个独立的python环境,就可以按下面操作创建一个隔离环境。
$ virtualenv test_env
你可以选择使用一个Python解释器:
$ virtualenv -p /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 test_env
还可以通过 -p 指定python版本.(不同用户python的路径不同,linux可以通过 which python3 查找路径)
创建成功后会输出以下内容
>> Using base prefix
>>'/Library/Frameworks/Python.framework/Versions/3.6'
>> New python executable in /Users/huangzhicheng/Desktop/pystudy/test_env/bin/python3.6
>> Also creating executable in /Users/huangzhicheng/Desktop/pystudy/test_env/bin/python
>> Installing setuptools, pip, wheel...done.
隔离的Python环境放到当前目录下的test_env目录。
可以使用source进入该环境
$ source test_env/bin/activate
在Windows中,则是执行 test_env/Script/activate.bat
执行完此条命令后 命令提示符前有了一个 (test_env) 前缀
在这个环境下是一个隔离于系统的python环境.
可以通过pip list 查看一下
(test_env) huangzhichengdeMacBook-Air:test_env huangzhicheng$ pip list
Package Version
---------- -------
pip 18.0
setuptools 40.4.3
wheel 0.32.0
在这个环境下通过pip安装的包都会放到test_env环境中.
在这个环境下可以安装Django1.9,如果有其他项目需要Django2.0那就在创建一个Virtualenv环境.
退出当前的venv环境,可以使用deactivate命令:
$ deactivate
可以发现前缀没有了,现在就回归正常环境了.
那是如何实现这种隔离的呢?
实际上 test_env/bin/activate 就是一个shell脚本
就是把系统Python复制一份到virtualenv的环境,脚本会修改相关环境变量,当然使用python命令的时候就会使用该环境的python。
单纯的使用virtualenv不利于我们对虚拟环境集中管理.所以有了virtualenvwrapper这么一个工具
我们也可以通过pip进行安装
$ pip3 install virtualenvwrapper
安装完成后,我们需要添加环境变量
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
如果不知道virtualenvwrapper.sh的位置,可以通过 which 或者 find 搜索.
将该命令添加到 ~/.bashrc 或 ~/.bash_profile 等shell启动文件中,以便登陆shell后可直接使用virtualenvwrapper提供的命令。
添加完成后,也记得source该文件
$ source ~/.bash_profile
这个时候可以使用workon命令查看已有的Virtualenv环境
下面提供了几个常用的命令.
# 创建运行环境zqxt
mkvirtualenv test_env
# 创建运行环境 test_env 并指定python版本
mkvirtualenv --python=/usr/local/bin/python3 test_env
# 进入test_env环境
workon test_env
# 退出终端环境
deactivate
# 删除环境test_env
rmvirtualenv test_env
# 创建test_pro项目和运行环境test_pro
mkproject test_pro
# 列出可用的运行环境
lsvirtualenv
# 列出当前环境安装了的包
lssitepackages
可能有些人会出现这种错误,是因为安装了2.7和3.x两个版本的python,在安装时使用的是sudo pip3 install virtualenvwrapper
在我运行的时候默认使用的是python2.x,但在python2.x中不存在对应的模块。
/usr/bin/python: No module named virtualenvwrapper
当不存在VIRTUALENVWRAPPER_PYTHON环境时,会默认选择使用which python(我这里默认是python2),
所以需要增加此环境变量:
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
这篇文章也只是简单的介绍了一下Virtualenv.但是对于普通的开发来说已经足够了.有兴趣了解更多知识或者实现原理的话,可以借助Google去查找相关资料.
2018年10月01日23:00
国庆快乐.
发表评论