用pythonbrew管理不同virtualenv中的Python版本
我的电脑上主要的Python版本是2.7.3。我想创建一个使用3.3.0版本的virtualenv
。我已经安装了pythonbrew、virtualenv和virtualenvwrapper。
这个教程的主要步骤是先运行pythonbrew use 3.3.0
,然后再创建一个virtualenv。教程说这个virtualenv会使用pythonbrew所用的版本,但实际上并不是这样。当我启动这个virtualenv时,它还是使用2.7.3版本。每次我运行pythonbrew use 3.3.0
时,它会退出virtualenv,直接应用到系统上,而不是在这个环境里。
显然,pythonbrew有自己的virtualenv包装工具,相关的教程在这里:http://suvashthapaliya.com/blog/2012/01/sandboxed-python-virtual-environments/
不过,我不喜欢这样做。有没有办法让virtualenvwrapper和pythonbrew一起使用(而不是使用pythonbrew的venv包装工具),这样我就可以选择每个虚拟环境使用哪个Python版本,并且与系统的Python版本保持分开?
另外,我不想使用mkvirtualenv -p
这个选项,因为这意味着我需要手动安装python3.3。我更希望使用包管理器来管理Python版本。我很难相信在Python中没有类似于Ruby的RVM的东西……除非我搞错了?
1 个回答
也许你应该看看 http://pypi.python.org/pypi/pythonbrew/。我当时就是用pythonbrew来创建虚拟环境的。
pythonbrew install 2.7.3
pythonbrew switch 2.7.3
pythonbrew venv create proj
效果非常好。
我现在习惯在我的git仓库下面创建一个以“.”开头的文件夹来放虚拟环境,这样我就可以随时删除这个虚拟环境,而不影响我的代码,如果需要的话还可以重新创建。这个方法是我在使用jenkins时发现的,jenkins会帮你克隆git仓库,然后你就得想办法在这个基础上建立一个虚拟环境。
Python/proj
.proj <---- Virtual environment is in here!
lib
site-packages
settings
requirements
apps
我还有一个bash函数,可以帮我快速进入虚拟环境。
function workon() {
if [ -d ~/Python/$1 ]
then
cd ~/Python/$1
if [ -d .$1 ]
then
. .${1}/bin/activate
else
. bin/activate
cd $1
fi
fi
}
不过这个方法对于旧项目来说有点复杂,因为旧项目的克隆是在虚拟环境里完成的,而新项目则是虚拟环境在项目内部。