如何配置多个Ubuntu Python安装以避免App Engine的SSL错误?
我在用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 个回答
在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。正如你所看到的,这真是麻烦!
你可以直接安装Ubuntu自带的Python 2.5版本。SSL模块不是必须的——就像警告信息所说的,如果你想进行证书验证,那它是必要的,但仅此而已。
你遇到的关于缺少'HTTPSHandler'的错误,可能是因为你安装的Python版本没有SSL支持(这和ssl 模块是不同的,ssl模块是用来进行证书验证的)——所以,建议你尝试安装标准版本。
至于版本选择,安装Python 2.5不会影响系统默认的Python版本——系统有一个选择工具可以让你选择哪个版本是默认的——所以你可以直接用'python2.5 dev_appserver.py'来运行dev_appserver等程序。