当前位置: 首页>>技术问答>>正文


将来python2.7将可用于10.04吗?

, , , ,

问题描述

由于Ubuntu 10.04是一个LTS版本,它是否支持python 2.7作为默认的包维护者版本,或者至少在未来有一个python2.7包?

由于它将是最后一个主要的python 2.x版本并且打算长时间保留,我决定使用它。我从源代码编译它(当然在构建deps之后),但是现在我发现了一些小问题。

将编译的python 2.7定义为默认值是否安全,因为有一些分布式应用程序可以在python上运行。

最佳解决思路

不,将2.7定义为Lucid中的默认Python解释器并不安全。而且我认为将来不会这样。

  • 一个版本中没有任何软件的主要版本升级。因此python2.7不会将2.6替换为默认解释器。这种升级只在一个版本之间完成 – 尤其是LTS – 只有所谓的稳定版本升级,即错误修正和安全相关的升级。

但是,使用python2.7,将解释器定义为#!/usr/bin/python2.7并让用户在python源上使用make altinstall和python2.6安装它是完全安全的。

次佳解决思路

对于无法升级到Maverick的VPS存在同样的问题(即使新的LTS图像也不总是按时提供)。 Marius’ answer做了让我入门的诀窍,但它应该扩展到:

将PPA添加到您的来源

如果你在我的情况下,运行add-apt-repository的简单建议将不适合你。那么让我们这样做old-fashioned方式:

  1. 打开文件/etc/apt/sources.list(您需要root权限;如果您在shell上,这可能意味着运行sudo vim /etc/apt/sources.list)。

  2. 一直到文件的底部(如果使用vim,按i切换到插入模式)并添加以下行:

    deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main 
    deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main 
    
  3. 保存并退出(在vim中:键入:wq)并返回到shell。

  4. 输入以下内容(您可以找到正确的密钥at the PPA;它是”technical details”中斜杠之后的部分 – 确保您选择正确的密钥):

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C
    
  5. 现在输入以下内容来更新源列表:

    sudo apt-get update
    

安装并设置Python 2.7

  1. 在服务器上打开一个shell并输入以下内容:

    sudo apt-get install python2.7 python2.7-dev
    
  2. 要使easy_install正常工作,请获取distribute bootscrap脚本:

    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
    

建立一个virtualenv

  1. 为新环境创建文件夹并将其打开:

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

    virtualenv --no-site-packages --python=python2.7 .
    
  3. 激活环境。您会注意到shell提示符更改以反映活动环境:

    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安装到给定路径上的虚拟环境)来将软件包安装到虚拟环境中。请记住,您将拥有与安装的不同Python版本对应的几个不同版本的pip

如果你想在虚拟环境之外工作时安装Python 2.7软件包,那么使用pip-2.7是个好主意(我们传递给virtualenv--python=python2.7选项意味着虚拟环境将使用它提供的Python 2.7版本的工具,所以你不要我不得不担心这一点)。

第三种解决思路

用于Ubuntu 10.04的Python 2.7的There’s a PPA。它可能比从源构建更安全/更方便。

第四种思路

这解决了我遇到https://stackoverflow.com/questions/7561221/undefined-symbol-pyobject-nextnotimplemented-error-when-loading-psycopg2-modu的各种问题。

现在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 here提供的说明进行操作。

我终于有了一个工作服务器。谢谢。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6883.html,未经允许,请勿转载。