问题描述
由于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方式:
-
打开文件
/etc/apt/sources.list
(您需要root权限;如果您在shell上,这可能意味着运行sudo vim /etc/apt/sources.list
)。 -
一直到文件的底部(如果使用
vim
,按i
切换到插入模式)并添加以下行:deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main
-
保存并退出(在
vim
中:键入:wq
)并返回到shell。 -
输入以下内容(您可以找到正确的密钥at the PPA;它是”technical details”中斜杠之后的部分 – 确保您选择正确的密钥):
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C
-
现在输入以下内容来更新源列表:
sudo apt-get update
安装并设置Python 2.7
-
在服务器上打开一个shell并输入以下内容:
sudo apt-get install python2.7 python2.7-dev
-
要使
easy_install
正常工作,请获取distribute
bootscrap脚本:curl -O http://python-distribute.org/distribute_setup.py python2.7 distribute_setup.py
-
最后,如果您打算做任何严肃的事情,您希望
pip
和virtualenv
正常工作:easy_install-2.7 pip pip-2.7 install virtualenv
建立一个virtualenv
-
为新环境创建文件夹并将其打开:
mkdir my_env && cd my_env
-
创建虚拟环境本身(点表示当前目录是环境的位置,如果跳过上一步,则用正确的路径替换它):
virtualenv --no-site-packages --python=python2.7 .
-
激活环境。您会注意到shell提示符更改以反映活动环境:
source bin/activate
-
无论你在这个shell中做什么,现在都将使用虚拟环境的
bin
文件夹中的脚本和该环境的Python包。请记住,选项--no-site-packages
意味着您从最小的软件包开始(包括pip
),因此您需要安装所有需要的软件包。 -
完成后,停用环境(这是活动环境识别的命令):
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。它可能比从源构建更安全/更方便。
第四种思路
现在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提供的说明进行操作。
我终于有了一个工作服务器。谢谢。