Предварительно позвольте мне сказать, пожалуйста, не предлагайте мне перейти на Python 3. Это не тот вопрос, о котором идет речь. Также обратите внимание, что этот вопрос не о том, как найти заголовки / библиотеки OpenSSL во время сборки Python; насколько я могу судить (см. ниже), у меня это работает.
Я создаю свою собственную копию Python 2.7 (я пробовал оба 2.7.15 и 2.7.16 с одинаковыми результатами) в недавнем выпуске GNU / Linux. Я хочу связать его с моей собственной созданной копией OpenSSL (я пробовал 1.1.1a и 1.1.1b). Обратите внимание, что я использовал эту библиотеку OpenSSL с другими приложениями, и она, кажется, построена правильно.
Компиляция, компоновка и установка идут хорошо: у меня есть все мои настройки, пути к общим библиотекам и т. Д. После компиляции и установки я могу без проблем загрузить модуль ssl
:
$ python
Python 2.7.15 (default, Mar 24 2019, 14:08:05)
[GCC 8.1.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> print(ssl.OPENSSL_VERSION)
OpenSSL 1.1.1b 26 Feb 2019
Однако, когда я пытаюсь использовать этот питон для установки какого-либо пакета через setup.py
, который должен загружать файлы, он не сможет загрузиться. Я извлек тест:
from setuptools.package_index import PackageIndex
PackageIndex().process_url(url='https://pypi.org/simple/backports.functools_lru_cache/',
retrieve=True)
выдает эту ошибку:
Download error on https://pypi.org/simple/backports.functools_lru_cache/: [X509] system lib (_ssl.c:3027) -- Some packages may not be found!
Я не уверен, что делать дальше; сообщение об ошибке относится к X509, так что может быть что-то не так с обработкой сертификата? Я использовал strace для двоичного файла, и я вижу, что означает , находя каталог системного сертификата (/etc/ssl
) и мой файл CRT (/etc/ssl/certs/ca-certificates.crt
).
Также: если я компилирую для своей системной версии OpenSSL, это работает. И если я скомпилирую на локально собранном экземпляре LibreSSL, это тоже сработает.
Я не знаю, куда идти отсюда, чтобы попытаться понять, в чем проблема. Помощь