Virtualenv的简单使用

  • 2018-10-01
  • 0
  • 0

作者信息:

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

国庆快乐.

评论

还没有任何评论,你来说两句吧