httplib2 API отличается при установке из исходного кода или как RPM? - PullRequest
0 голосов
/ 05 февраля 2012

Мальчик, это расстраивает ...

Я установил httplib2, загрузив пакет .tar.gz с сайта на моей виртуальной машине разработки CentOS. Потратив полдня на выполнение двухсторонней аутентификации ssl, я установил python26-httplib2.noarch на целевой машине RHEL 5.7. Внезапно код не запускается, так как конструктор класса отличается!

Официальная документация определяет класс Http следующим образом:

класс httplib2.Http ([кэш = нет] [, тайм-аут = нет] [, proxy_info = нет] [, ca_certs = Нет] [, disable_ssl_certificate_validation = False])

Мой код, использующий установку tar, действительно делает это, и это работает:

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

Однако параметр ca_cert не распознается при установке RPM. Глядя в библиотеку, я действительно вижу следующее:

class Http(object):

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

т.е. совершенно другой список параметров.

Есть ли какое-то объяснение этому?

PS. Извините, если я звучу в ярости - я. Сейчас 8 вечера, и я надеялся проверить код сегодня ...
PPS. Python 2.6

1 Ответ

1 голос
/ 05 февраля 2012

Я бы догадался: разные версии httplib2.Насколько я понимаю из быстрого взгляда на журнал изменений и код, ca_certs поддерживает проверку сертификата сервера SSL, которая была добавлена ​​в httplib2 0.7.0.Возможно ли, что версия httplib2 из RPM старше этой версии?Что показывает print httplib2.__version__?

В качестве обходного пути я бы предложил не устанавливать библиотеки Python из файлов tar.gz или из пакетов Red Hat;вместо этого используйте pip , возможно, с файлом требований, в котором вы можете указать точный номер версии (или даже нижний) каждой внешней библиотеки, необходимой для запуска вашей программы.

...