用pythonbrew管理不同virtualenv中的Python版本

0 投票
1 回答
1770 浏览
提问于 2025-04-17 15:26

我的电脑上主要的Python版本是2.7.3。我想创建一个使用3.3.0版本的virtualenv。我已经安装了pythonbrew、virtualenv和virtualenvwrapper。

我按照这个教程操作:http://technomilk.wordpress.com/2011/07/27/setting-up-our-django-site-environment-with-pythonbrew-and-virtualenv/

这个教程的主要步骤是先运行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 个回答

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
}

不过这个方法对于旧项目来说有点复杂,因为旧项目的克隆是在虚拟环境里完成的,而新项目则是虚拟环境在项目内部。

撰写回答