Сборка Python 3.7.1 - сбой модуля SSL - PullRequest
0 голосов
/ 29 ноября 2018

При сборке Python 3.7 из исходного кода возникает следующая ошибка:

Failed to build these modules:
_hashlib              _ssl                                     

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

Я пробовал так много обходных путей из других вопросов stackoverflow, но он не работает.Я строю новейшие OpenSSL и LibreSSL из исходного кода.Путь OpenSSL: "/ usr / local / ssl" с версией OpenSSL 1.0.2p.

./configure --with-openssl=/usr/local/ssl/
(./configure CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib")
make 
make altinstall

Моя система: Ubuntu 12.04.5 LTS

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 10 марта 2019

Это то, что я сделал, чтобы заставить его работать

brew reinstall openssl

brew unlink openssl && brew link openssl --force

  export LDFLAGS="-L/usr/local/opt/openssl/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl/include"

  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

Затем загрузите ваш python tarball и сделайте это

tar xvf Python-3.7.2.tar
cd Python-3.7.2
  ./configure CPPFLAGS="-I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/opt/openssl/lib" --prefix=$PWD/Python-3.7.2/mybuild --enable-optimizations
0 голосов
/ 21 августа 2019

Я решил это через 3 дня только из-за этого блога. с python 3.7.4 openssl 1.1.0 centOS 6.

вот краткое изложение:

Во-первых, некоторые предварительные условия:

sudo apt-get install build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

используйте yum вместо apt-get при использовании centos linux.

Установите ssl 1.0.2 или выше.

    cd /usr/src
    curl https://www.openssl.org/source/openssl-1.0.2o.tar.gz | tar xz
    cd openssl-1.0.2o
    ./config shared --prefix=/usr/local/
    sudo make
    sudo make install

Мынужно будет передать /usr/src/openssl-1.0.2o в скрипт настройки Python.

mkdir lib
cp ./*.{so,so.1.0.0,a,pc} ./lib

Теперь приступим к установке Python:

    cd /usr/src
    sudo wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
    sudo tar xzf Python-3.7.0.tgz
    cd Python-3.7.0
    ./configure --with-openssl=/usr/src/openssl-1.0.2o --enable-optimizations
    sudo make
    sudo make altinstall

Чтобы проверить его, запуститеpython3.7 и ввод:

import ssl
ssl.OPENSSL_VERSION

Надеюсь, это поможет!

0 голосов
/ 03 марта 2019

Хотя это может быть не самый лучший ответ, я поделюсь, как я решил эту проблему.

  1. Прежде всего, в моем случае, OpenSSL не собирался правильно, так как make test возвращал ошибки (и, следовательно, Python выдал эту ошибку).Это было решено путем установки более новой версии Perl, а затем повторной установки OpenSSL (настройка, сборка и т. Д.).

  2. Используйте эту команду перед использованием ./configure

    export LD_LIBRARY_PATH = / path / to / openssl / lib: $ LD_LIBRARY_PATH

  3. В команде configure включите библиотеку:

    LDFLAGS = "- L / path / to / openssl / lib" ./configure (все ваши предпочтительные параметры) --with-openssl = / path / to / openssl

    , так как, по-видимому, опция configure не передает сообщение компилятору C, который в этом нуждается.

Не уверен, нужны ли варианты 2 и 3 одновременно, но я так и сделал, и все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...