Ошибка Python 3.5 OpenSSL

Итак, я работал с errbot и запустил virtualenv с python3.5. Когда я запускаю команду errbot, я получаю эту ошибку

from OpenSSL import crypto
  File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/OpenSSL/rand.py", line 12, in <module>
    from OpenSSL._util import (
  File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 250, in <module>
    _verify_openssl_version(Binding.lib.SSLeay())
  File "/Users/me/workspace/chatbotv2/chatbot_venv3/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 230, in _verify_openssl_version
    "You are linking against OpenSSL 0.9.8, which is no longer "

Это тема «запрошено до смерти» на SO, поэтому, очевидно, я был в состоянии получить решение как можно скорее. Я последовал этому ответу. Однако, когда я запускаю brew link --force openssl, я получаю следующее:

Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

Для чего я пробовал:

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

После этого я теряюсь и не знаю, что делать. Когда я пытаюсь: python -c "import ssl; print (ssl.OPENSSL_VERSION)", я все еще получаю OpenSSL 0.9.8zg 14 July 2015. Я использую OSX


person Beginner    schedule 24.08.2016    source источник
comment
две быстрые вещи: 1) вы пытались заставить brew сначала обновить openssl перед связыванием? brew install openssl затем brew link openssl --force 2) вы проверяли наличие нескольких экземпляров openssl на своем пути?   -  person Liam Kelly    schedule 25.08.2016
comment
Да, я обновил openssl до openssl-1.0.2h_1. КОГДА я делаю $ echo $PYTHONPATH в своем virtualenv, он возвращает пустую строку   -  person Beginner    schedule 25.08.2016
comment
Мне нужно немного больше информации о вашем пути. Попробуйте так: введите which openssl, затем посмотрите, есть ли openssl в /usr/bin и /usr/local/bin. Я предполагаю / надеюсь, что вы найдете один в обоих.   -  person Liam Kelly    schedule 25.08.2016
comment
@Upsampled which openssl возвращает /usr/local/bin/openssl   -  person Beginner    schedule 25.08.2016
comment
Попробуйте выполнить инструкции под EDIT в этом сообщении.   -  person Liam Kelly    schedule 25.08.2016
comment
Обе команды возвращают File exists   -  person Beginner    schedule 25.08.2016


Ответы (1)


Обновите свой пипс. pip 8.1+ загрузит двоичное колесо с предварительно скомпилированной криптографией. Если вы хотите скомпилировать его самостоятельно, правильные переменные среды для homebrew также можно найти в документации по установке< /а> страница.

person Paul Kehrer    schedule 26.08.2016