切换python的版本

时间:2009-07-10 11:12:53

标签: python development-environment ubuntu-9.04

故事: 我在python 2.4和其他2.6上工作的应用程序之一。我试图将python2.4的sym链接做到python,并且在ubuntu jaunty上开始出现问题。 现在我正在下载2.4的每个依赖项并使用python2.4 setup.py install安装它。依赖关系似乎无穷无尽。

问题1:我将如何告诉任何框架去使用版本如此pf python如day django使用2.6并说mjango使用2.4?像我们说的那样使用数据库databasename有点语法。

问题2:是否有更优雅的方式在版本之间切换,因为我的符号隐藏是虚拟灾难?

问题3:我可以下载deb来说耐寒,让jaunty相信它适合她吗?

7 个答案:

答案 0 :(得分:31)

使用Virtualenv

此处有更多信息:Working with virtualenv

使用virtualenv,您可以使用任何版本的Python为每个项目或应用程序创建一个新的虚拟python环境。然后,您可以在需要时激活适当的环境。

扩展我的回答:

您可以在计算机上安装多个版本的Python(我的机器上有2.4,2.5,2.6和3.1 - 我从源代码安装)。我使用Mac,并将我的系统Python保留为默认的OS X设置。

我使用 easy_install 来安装软件包。在ubuntu上你可以像这样得到easy_install:

sudo apt-get install python-setuptools

要安装virtualenv,请执行:

easy_install virtualenv

我倾向于为我正在处理的每个项目创建一个新的virtualenv,并且不允许它访问全局站点包。这使得所有包裹紧密结合在一起,使我能够拥有我需要的所有特定版本。

virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT

然后每当我做与该项目相关的任何事情时,我都会激活它:

source ~/env/NEW_DJANGO_PROJECT/bin/activate

如果我现在运行python,它会使用这个新的python。如果我使用easy_install,它会将内容安装到我的新虚拟环境中。

所以,virtualenv应该能够解决你所有的问题。

答案 1 :(得分:6)

Pythonbrew是一个神奇的工具。其中也可以称为Python版本管理器,类似于RVM-Ruby版本管理器,但Pythonbrew的灵感来自于Perlbrew。

Pythonbrew是一个自动在用户$ HOME中构建和安装Python的程序。

 Dependencies – curl

在安装Pythonbrew之前,在机器中安装“curl”,安装curl使用终端中的以下命令,在提示时为用户提供密码。

 $sudo apt-get install curl

安装curl后,立即安装Pythonbrew,在终端中复制并粘贴以下命令,并在出现提示时键入用户的密码。

推荐的安装方法 - 轻松安装

 $ sudo easy_install pythonbrew 

要完成安装,请键入以下命令

 $pythonbrew_install

替代安装方法:

使用curl命令从github下载最新版本的pythonbrew。

curl -kLO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install

下载后,将“pythonbrew-install”更改为“executable”

 chmod +x pythonbrew-install

然后,在终端

中运行pythonbrew-install
./pythonbrew-install

现在已经在“Home Directory”中安装了Pythonbrew,即/home/user/.pythonbrew

接下来,将以下行复制并粘贴到〜/ .bashrc

的末尾

*注意:将“user”更改为系统中的用户名

source /home/user/.pythonbrew/etc/bashrc

多数民众赞成!关闭终端。 安装不同版本的Python的步骤:

打开一个新终端,键入以下命令或复制并粘贴它。

$pythonbrew install 2.6.6

这将安装Python 2.6.6并安装Python 2.7或Python 3.2,更改上一个命令中的版本号。

$pythonbrew install 2.7

$pythonbrew install 3.2

更新:如果在安装时遇到错误,请使用以下命令安装。

$pythonbrew install --force 2.7

$pythonbrew install --force 3.2

如何管理系统中安装的不同版本的Python

例如,如果您的系统中安装了Python 2.6.6Python 2.7Python 3.2,则可以按如下方式在版本之间切换:

默认情况下,Python 2.6.6将处于活动状态,为了切换到Python 2.7,请使用以下命令

$pythonbrew switch 2.7

默认的Python改为Python 2.7。

现在,要切换到Python 3.2,请更改上一个命令中的版本号。

$pythonbrew switch 3.2

使用以下命令检查或列出已安装的Python版本

$pythonbrew list

使用以下命令检查或列出要安装的可用Python版本

$pythonbrew list -k

要卸载任何已安装的Python版本(例如卸载Python 2.7),请使用以下命令。

$pythonbrew uninstall 2.7

使用以下命令更新Pythonbrew

$pythonbrew update

使用以下命令禁用Pythonbrew并激活默认版本

$pythonbrew off

享受在单个Linux / ubuntu机器上安装多个版本的Python的经验!

答案 2 :(得分:4)

我发现http://github.com/utahta/pythonbrew比任何其他解决方案都更容易安装和使用。

只需安装它,您就可以选择以下选项:

pythonbrew install 2.7.2
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide
pythonbrew uninstall 2.7.2

注意:如果您使用预装了Python的基于Linux的操作系统,将系统范围切换到另一个版本可能会出错,所以要小心。

答案 3 :(得分:3)

比Virtualenv更基层的方法是两个Python版本的并排安装。

如果存在现有安装,并且您希望第二次安装到同一根路径(例如/ usr / local),请在安装时使用此目标:

make altinstall

当您的第二次安装是Python 2.6时,这将为您提供/usr/local/bin/python2.6以及旧的/ usr / local / bin / python。

在这两个版本之间切换的一种简单方法是在调用解释器的shell上使用shell别名(别名python = / usr / local / bin / python2.6)。但这不适用于子shell和she-bang调用。

答案 4 :(得分:2)

pyenv是另一位Python经理。该链接的README.md有一组很好的指令,但它们基本上是:

$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv

然后设置$ PATH。

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

安装所需的Python版本:

$ pyenv install 2.7.8

安装完成后,您需要运行:

$ pyenv rehash

然后切换到要运行的Python版本,对于shell:

$ pyenv shell 2.7.8

答案 5 :(得分:1)

<问题1:问题1:我将如何告诉任何框架,并使用版本,所以pf python像day django使用2.6并说mjango使用2.4?“

您只需使用他们需要的特定python版本运行它们。使用/usr/bin/python2.4运行mjango,使用/usr/bin/python2.6运行django。就这么简单。

“问题2:是否有更优雅的方式在版本之间切换,因为我的符号隐藏是虚拟灾难?”

是的,见上文。有两个单独的Python安装,并使用不同的版本显式运行。

“问题3:我可以下载deb来说耐寒,并让jaunty相信它适合她吗?”

这通常有效。如果没有,那是因为它具有Hardy中存在的依赖关系,并且在Jaunty中不存在,然后你就不能存在。

这是一个问题4,你没有问,但应该有。 ;)

“有没有更简单的方法来下载所有这些Python模块?”

是的,有。安装setuptools,并使用easy_install。对于那些具有C代码且需要编译的Python模块,它不会帮助您使用库依赖。但它帮助所有其他人。 easy_install将一次性下载并安装所讨论模块的所有Python依赖项。这使得安装Python模块的速度更快。

答案 6 :(得分:0)

移至项目目录:

创建一个环境: virtualenv -p python2.7 --no-site-packages~ / env / twoseven

然后激活您的来源: source~ / env / twoseven / bin / activate