未来是否会有Python2.7适用于10.04版本?

由于Ubuntu 10.04是一个LTS版本,它会支持Python 2.7作为默认的软件包维护版本,或者至少在未来会有一个Python 2.7的软件包吗?
由于这将是最后一个主要的Python 2.x版本,并且打算长期保留,我决定使用它。我从源代码编译了它(当然,在构建依赖项之后),但偶尔会遇到一些小问题。
如果我将编译的Python 2.7定义为默认版本,是否安全?因为有一些分发应用程序是基于Python工作的。
5个回答

我遇到了一个无法升级到Maverick的VPS的相同问题(即使新的LTS镜像也不总是及时提供)。Marius' answer帮助我开始解决问题,但还需要进一步扩展:

将PPA添加到您的源中

如果您和我处于同样的情况,那么简单运行add-apt-repository的建议对您来说是行不通的。所以让我们用老方法来做:

  1. 打开文件 /etc/apt/sources.list(需要 root 权限;如果在 shell 上,可能需要运行 sudo vim /etc/apt/sources.list)。
  2. 滚动到文件底部(如果使用 vim,按下 i 进入插入模式),添加以下行:
  3. deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main 
    deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main 
    
  4. 保存并退出(在 vim 中:输入 :wq),返回到 shell。
  5. 输入以下内容(可以在 PPA 上找到正确的密钥 at the PPA;它是“technical details”中斜杠后面的部分 - 确保选择正确的密钥):
  6. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C
    
  7. 现在输入以下内容来更新源列表:
  8. sudo apt-get update
    
安装和设置Python 2.7
  1. 在您的服务器上打开一个shell,并输入以下命令:

    sudo apt-get install python2.7 python2.7-dev
    
  2. 为了让easy_install正常工作,请获取distribute引导脚本:

    curl -O http://python-distribute.org/distribute_setup.py
    python2.7 distribute_setup.py
    
  3. 最后,如果您计划进行任何重要的操作,您需要让pipvirtualenv正常工作:

    easy_install-2.7 pip
    pip-2.7 install virtualenv
    
设置虚拟环境
  1. 创建新环境的文件夹并打开:

    mkdir my_env && cd my_env
    
  2. 创建虚拟环境本身(点表示当前目录是环境的位置,如果你跳过了上一步,请用正确的路径替换它):

    virtualenv --no-site-packages --python=python2.7 .
    
  3. 激活环境。你会注意到命令提示符会改变以反映出激活的环境:

    source bin/activate
    
  4. 现在在这个shell中所做的任何操作都将使用虚拟环境的bin文件夹中的脚本和该环境的Python包。请记住,选项--no-site-packages意味着您从最小的包集开始(包括pip),因此您需要安装所有需要的包。

  5. 完成后,停用环境(这是一个被激活环境识别的命令):

    deactivate
    
你还可以通过将选项-E传递给pip来将软件包安装到虚拟环境中(例如:pip install some-package -E /path/to/virtual/environment,将some-package安装到给定路径上的虚拟环境中)。请记住,您将有几个不同版本的pip对应于安装的不同Python版本。
如果您在虚拟环境之外工作,并且想要为Python 2.7安装软件包,使用pip-2.7是一个好主意(我们传递给virtualenv--python=python2.7选项意味着虚拟环境将使用它提供的Python 2.7版本的工具,所以您不必担心这个问题)。

1在我的情况下,我已经为2.6版本安装了pip,并且我不得不使用easy_install-2.7 -U pip来强制安装2.7版本。但还是谢谢你,这真的帮了我很多! - Gabe Moothart
2在“安装和设置Python 2.7”的第2步中,我需要执行wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python2.7。然后,为了获取pip,执行sudo python2.7 -m easy_install pip,接着执行sudo python2.7 -m easy_install --upgrade pip。--no-check-certificate选项是为了解决wget对SSL证书的投诉。(请参考https://pypi.python.org/pypi/setuptools#unix-wget) - zlovelady

不,将2.7定义为您在Lucid中的默认Python解释器是不安全的。而且我认为将来也不会这样做。
在一个版本中没有任何软件的主要版本升级。因此,python2.7不会取代2.6作为默认解释器。这种升级只会在版本之间进行,在一个版本内(尤其是LTS版本)只会进行所谓的稳定发布升级,即错误修复和安全相关的升级。
然而,使用python2.7是完全安全的,可以将解释器定义为#!/usr/bin/python2.7,并让用户在python源代码上使用make altinstall进行安装,与python2.6并存。


这解决了我遇到的各种问题。现在libpython2.7.so.1.0链接到我的Python2.7,一切似乎更加顺利。最后一个需要搞清楚的是mod_wsgi的安装。如果你只是简单地执行以下命令:
$ apt-get install libapache2-mod-wsgi

这将会被编译为Python2.6 :(
$ ldd /usr/lib/apache2/modules/mod_wsgi.so

libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00178000)

所以我遵循了Gork-Zope提供的指示 在这里

我终于有一个正常工作的服务器。谢谢。


我不这么认为,因为这将需要改变许多与10.04版本相关的程序和库。实际上,Ubuntu中的许多工作都是使用特定的Python版本完成的。将其更改为Python会改变许多系统文件。

对于10.10版本,只需通过synaptic/aptitude安装python2.7(还可以安装3和3.1)即可获得。但是对于10.04版本,没有为其提供相应的工作。

10.10版本默认使用Python 2.6。对于答案是否不乐观表示抱歉,只是想给您一个变化的概念。

编辑 - 根据下面的评论再次检查,将Python 2.7更改为Python 2.6作为默认版本。谢谢。


我刚在虚拟机中试用了10.10版本,它默认安装了Python 2.6.6,尽管Maverick有2.7的软件包可用。我认为默认安装2.7的是11.04版本。 通常我会不断更新和更换发行版,但考虑到长期支持和我的自定义设置,我打算坚持使用10.04版本。 - crodjer
是的,从几天前开始,11.04版本默认为2.7。 - Stefano Palazzo