Back to Python#Installation

See also pip

virtualenv

virtualenv是一个将不同项目所需求的依赖分别放在独立的地方的一个工具,它给这些工程创建虚拟的Python环境。它解决了“项目X依赖于版本1.x,而项目Y需要项目4.x”的两难问题,而且使你的全局site-packages目录保持干净和可管理。

比如,你可以工作在一个需求Django 1.3的工程,同时维护一个需求Django 1.0的工程。

1. Installation

$ pip install virtualenv

1.1. 基本使用

$ cd my_project_folder
$ virtualenv env
# 选择使用的Python解释器
$ virtualenv -p /usr/bin/python2.7 env
# 要开始使用虚拟环境,其需要被激活:
$ source env/bin/activate
# 像平常一样安装包,比如:
$ pip install requests
# 如果你在虚拟环境中暂时完成了工作,则可以停用它:
$ deactivate

1.2. 修改python默认的编码方式

# 自动加载 sitecustomize.py
$ cat env/lib/python*/site-packages/sitecustomize.py
# encoding=utf8  
import sys  

reload(sys)  
sys.setdefaultencoding('utf8')

1.3. 建立moin独立工作环境

# Install and activate python virtualenv
sudo pip install virtualenv
sudo mkdir -p /srv/www/moin
sudo chown -R liyan:admin /srv
virtualenv /srv/www/moin/env
# active virtualenv
source /srv/www/moin/env/bin/activate

# Download and install moinmoin:
cd /tmp
wget http://static.moinmo.in/files/moin-1.5.2.tar.gz
tar zxvf moin-1.5.2.tar.gz
cd moin-1.5.2
python setup.py install

# Deactivate python virtualenv
deactivate

Add in code:

sys.path.insert(0, 'pythonenv/lib/python2.3/site-packages/')

1.4. osx_framework script

https://matplotlib.org/faq/osx_framework.html#pythonhome-script

vi $VIRTUAL_ENV/bin/pythonW

#!/bin/bash

# what real Python executable to use
PYVER=2.7
PATHTOPYTHON=/usr/local/bin/
PYTHON=${PATHTOPYTHON}python${PYVER}

# find the root of the virtualenv, it should be the parent of the dir this script is in
ENV=`$PYTHON -c "import os; print(os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..')))"`

# now run Python with the virtualenv set as Python's HOME
export PYTHONHOME=$ENV
exec $PYTHON "$@"

2. 安装virtualenvwrapper

virtualenvwrapper 提供了一系列命令使得和虚拟环境工作变得愉快许多。它把你所有的虚拟环境都放在一个地方。

# 安装(确保 virtualenv 已经安装了)
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ source /usr/local/bin/virtualenvwrapper.sh

3. 安装autoenv

当你 cd 进入一个包含 .env 的目录中,就会 autoenv 自动激活那个环境。

$ brew install autoenv
$ echo 'source /usr/local/opt/autoenv/activate.sh' >> ~/.bash_profile
# zsh
$ echo 'source /usr/local/opt/autoenv/activate.sh' >> ~/.zshrc

$ echo echo source \"$(pwd)/env/bin/activate\" > .env
$ autoenv_init 
(env)➜  matplotlib 
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /Users/liyan/app/python/matplotlib/.env:
autoenv:
autoenv:     --- (begin contents) ---------------------------------------
autoenv:     source env/bin/activate
autoenv:     --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N) y
$ deactivate 
$

4. Reference

MainWiki: virtualenv (last edited 2011-04-22 15:09:21 by twotwo)