从源码安装和作为RPM安装的httplib2 API有什么不同?

0 投票
1 回答
623 浏览
提问于 2025-04-17 12:23

真是让人沮丧啊...

我在我的CentOS开发虚拟机上,从这个网站下载了httplib2的.tar.gz包来安装它。花了半天时间搞定双向SSL认证后,我在目标的RHEL 5.7机器上安装了python26-httplib2.noarch。结果代码突然不运行了,因为类的构造函数不一样了!

官方文档对Http类的定义是这样的:

class httplib2.Http([cache=None][, timeout=None][, proxy_info=None][, ca_certs=None][, disable_ssl_certificate_validation=False])

我用tar安装的代码确实是这样写的,而且可以正常工作:

client = httplib2.Http(ca_certs='/path-to/ca.cert')

但是,在RPM安装中,ca_cert这个参数却不被识别。我在库里查看,确实看到了以下内容:

class Http(object):

    def __init__(self, cache=None, timeout=None, proxy_info=None):

也就是说,参数列表完全不同。

这有什么解释吗?

PS. 对不起,如果我听起来很生气 - 我确实很生气。现在是晚上8点,我本希望今天能把代码提交上去...
PPS. Python 2.6

1 个回答

1

我猜可能是不同版本的httplib2。根据我快速浏览更新日志和代码的理解,ca_certs是用来验证SSL服务器证书的,这个功能是在httplib2 0.7.0版本中添加的。是不是有可能你用的RPM里的httplib2版本比这个还要旧呢?你可以用print httplib2.__version__来查看一下当前的版本。

作为一个解决办法,我建议不要从tar.gz文件或者红帽的包中安装Python库;可以使用pip来安装,最好用一个需求文件,这样你可以指定每个外部库的确切版本号(或者至少是最低版本号),确保你的程序能够正常运行。

撰写回答