如何配置多个Ubuntu Python安装以避免App Engine的SSL错误?

6 投票
2 回答
4833 浏览
提问于 2025-04-15 22:13

我在用Karmic Koala系统,默认安装了Python 2.6。

不过,我无法运行任何Python App Engine项目,因为它们需要Python 2.5和python ssl。

为了安装ssl,我先安装了python2.5-dev,按照我在别处找到的一些说明进行操作。

sudo apt-get install libssl-dev
sudo apt-get install python-setuptools
sudo apt-get install python2.5-dev 
sudo easy_install-2.5 pyopenssl

但是,我担心这对我的Ubuntu安装不好,因为当我在命令行输入'python'时,Ubuntu希望看到的是2.6版本的Python,结果却显示'2.5.5'。

不过,经过这些操作后,App Engine还是无法正常工作。每次我尝试运行我的Python应用时,都会出现与SSL相关的错误:

AttributeError: 'module' object has no attribute 'HTTPSHandler'

更新1:我刚检查了一下,看看这些命令是否真的安装了SSL,输入了这个:

$ python2.5
Python 2.5.5 (r255:77872, Apr 29 2010, 23:59:20) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named ssl
>>> 

如你所见,SSL仍然没有安装,这也解释了为什么App Engine一直出错。

更新2:

我尝试通过这样做来恢复到原来的默认Python版本:

sudo ln -s /usr/bin/python2.6 python

在我的/usr/bin/local文件夹里。

现在当我在命令行输入'python'时,得到的是Python 2.6.4。

但是这并没有解决我在App Engine上遇到的SSL问题。

如果有人知道我该如何摆脱这个困境,我将非常感激。

2 个回答

2

在Ubuntu 9.10上,只需要简单地输入 sudo aptitude install python2.5 就可以安装Python 2.5,然后在运行脚本时加上 python2.5,像这样:

python2.5 google_appengine/dev_appserver.py ...

但是在Ubuntu 10.04上情况就大不相同了,因为Python 2.5已经不在软件库里了……这就意味着你得从源代码安装,而我之前做过这件事,我可以告诉你,这可不是件轻松的事。你只会希望谷歌能快点解决 问题757

无论是从软件库安装还是从源代码编译,安装Python 2.5的SSL支持都是一样的。只需下载 适用于2.5的SSL库,解压缩,然后运行

sudo python2.5 setup.py install

补充:之前提到的问题的 评论51 详细解释了如何在Ubuntu 10.04上安装Python 2.5。正如你所看到的,这真是麻烦!

2

你可以直接安装Ubuntu自带的Python 2.5版本。SSL模块不是必须的——就像警告信息所说的,如果你想进行证书验证,那它是必要的,但仅此而已。

你遇到的关于缺少'HTTPSHandler'的错误,可能是因为你安装的Python版本没有SSL支持(这和ssl 模块是不同的,ssl模块是用来进行证书验证的)——所以,建议你尝试安装标准版本。

至于版本选择,安装Python 2.5不会影响系统默认的Python版本——系统有一个选择工具可以让你选择哪个版本是默认的——所以你可以直接用'python2.5 dev_appserver.py'来运行dev_appserver等程序。

撰写回答