这是我的个人小站,当然,还有杜比。

python virtualenv 学习总结

python shimeng 182浏览 0评论

python_logo
virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
首先,我们用pip安装virtualenv:

pip install virtualenv

然后,假定我们要开发一个新的项目,需要一套独立的Python运行环境,可以这么做:
– 第一步,创建目录:

[shimeng@myvpc ~]$ mkdir virtualenv_test
[shimeng@myvpc ~]$ cd virtualenv_test/
  • 第二步,创建一个独立的Python运行环境,命名为venv:
[shimeng@myvpc virtualenv_test]$ virtualenv --no-site-package venv
New python executable in /home/shimeng/virtualenv_test/venv/bin/python
Installing setuptools, pip, wheel...done.

解释:命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数–no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
如果在命令行中运行virtualenv –system-site-packages ENV, 会继承/usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把把访问全局site-packages作为默认行为default behavior.
新建的Python环境被放到当前目录下的venv目录。有了venv这个Python环境,可以用source进入该环境:

[shimeng@myvpc virtualenv_test]$ source venv/bin/activate
(venv) [shimeng@myvpc virtualenv_test]$ 

注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境。
下面正常安装各种第三方包,并可以运行各种python命令。
在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对virtualenv_test这个应用创建的
– 退出当前的venv环境,使用deactivate命令:

(venv) [shimeng@myvpc virtualenv_test]$ deactivate
[shimeng@myvpc virtualenv_test]$ 

此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。

指定python版本

virtualenv -p /usr/bin/python2.7 venv

生成可打包环境

某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV

virtualenv --relocatable ./

把所有虚拟环境都放在一个地方

为神马需要 virtualenvwrapper?这要从 virtualenv 说起。
上一节结束的时候说,如果忘记了虚拟环境的位置,一切就真的没发生过了。虽然是句玩笑,不过真的会发生哦~
virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。
一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,比如放到 ~/virtualenvs/,并对不同的虚拟环境使用不同的目录来管理。virtualenvwrapper 正是这样做的。并且,它还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。

- 将所有虚拟环境整合在一个目录下
- 管理(新增,删除,复制)虚拟环境
- 切换虚拟环境
  • 安装(确保 virtualenv 已经安装了):
    LINUX
pip install virtualenvwrapper

首先,需要对 virtualenvwrapper 进行配置。它需要指定一个环境变量,叫做 WORKON_HOME,并且需要运行一下它的初始化工具 virtualenvwrapper.sh,这个脚本在 /usr/local/bin/ 目录下。WORKON_HOME 就是它将要用来存放各种虚拟环境目录的目录,这里我们可以设置为 ~/.virtualenvs。

export WORKON_HOME='~/.virtualenvs'
source /usr/local/bin/virtualenvwrapper.sh

由于每次都需要执行这两部操作,我们可以将其写入终端的配置文件中。例如,如果使用 bash,则添加到 ~/.bashrc 中;如果使用 zsh,则添加到 ~/.zshrc 中。这样每次启动终端的时候都会自动运行,终端其中之后 virtualenvwrapper 就可以用啦。
在~/.bashrc中添加行:

export WORKON_HOME=$HOME/.local/virtualenvs       # 所有虚拟环境存储的目录             
if [ -e $HOME/.local/bin/virtualenvwrapper.sh ];then
source $HOME/.local/bin/virtualenvwrapper.sh            else if [ -e /usr/local/bin/virtualenvwrapper.sh ];then
source /usr/local/bin/virtualenvwrapper.sh 
    fi  
 fi                                                                                                                          

启动 virtualenvwrapper: source ~/.bashrc

WIN
使用 virtualenvwrapper-win

pip install virtualenvwrapper-win
  • 基本使用
    1. 创建一个虚拟环境
mkvirtualenv venv

这将在这会在 ~/Envs 中创建 venv 文件夹。

[root@localhost ~]# mkvirtualenv env1
New python executable in env1/bin/python
Installing setuptools, pip...done.
(env1)[root@localhost ~]# mkvirtualenv env2
New python executable in env2/bin/python
Installing setuptools, pip...done.

注意:mkvirtualenv可以使用virtualenv的参数,比如–python来指定python版本。创建虚拟环境后,会自动切换到此虚拟环境里。虚拟环境目录都在WORKON_HOME里。
– 2.列出虚拟环境列表

workon or lsvirtualenv -b
    1. 在虚拟环境上工作:
$ workon venv
 echo $VIRTUAL_ENV

查看环境里安装了哪些包:lssitepackages

或者,你可以创建一个项目,它会创建虚拟环境,并在 $PROJECT_HOME 中创建一个项目目录。当你使用 workon myproject 时,会 cd -ed 到项目目录中。

mkproject myproject

virtualenvwrapper 提供环境名字的tab补全功能。当你有很多环境,并且很难记住它们的名字时,这就显得很有用。
workon 也能停止你当前所在的环境,所以你可以在环境之间快速的切换。
– 4 停止

deactivate
  • 5 删除
rmvirtualenv venv
  • 6.进入当前环境的目录:cdvirtualenv [子目录名]
(env1)[root@localhost ~]# cdvirtualenv
(env1)[root@localhost env1]# pwd
/root/workspaces/env1
(env1)[root@localhost env1]# cdvirtualenv bin
(env1)[root@localhost bin]# pwd
/root/workspaces/env1/bin
进入当前环境的site-packages目录:cdsitepackages [子目录名]
(env1)[root@localhost env1]# cdsitepackages
(env1)[root@localhost site-packages]# pwd
/root/workspaces/env1/lib/python2.6/site-packages
(env1)[root@localhost site-packages]# cdsitepackages pip
(env1)[root@localhost pip]# pwd
/root/workspaces/env1/lib/python2.6/site-packages/pip
  • 7.控制环境是否使用global site-packages:toggleglobalsitepackages
  • 8.复制虚拟环境:cpvirtualenv [source] [dest]
[root@localhost ~]# cpvirtualenv env1 env3
Copying env1 as env3...
(env3)[root@localhost ~]#

转载请注明:Show Me Code » python virtualenv 学习总结

喜欢 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址