Как установить и использовать библиотеку openssl в приложениях python
Я установил Python 3.4 и Python 3.6 на свой локальный компьютер успешно, но не могу установить пакеты с pip3 .
Когда я выполняю pip3 install <package> , я получаю следующую связанную с SSL ошибку:
Вы явно установили pip3 на свою Ubuntu с помощью команды sudo apt-get install python3-pip ??Пошаговое руководство по установке Python 3.6 и pip3 в Ubuntu
Откройте терминал в этом каталоге и запустите: $./configure
Установите необходимые пакеты для Python и ssl: $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
Сборка и установка: $ sudo make && sudo make install
Установите пакеты с помощью: $ pip3 install package_name
Спасибо! Я ходил кругами, заставляя python3 работать с Ubuntu 14.04, пока не нашел этот список команд. Это сработало для меня. Большое спасибо. Одна вещь, которую я не мог обернуть, хотя, почему бы не начать с шага 4 и только "make; make install" один раз? Не работайте для python 3.5.6 на Debian Testing / Buster Работал в Ubuntu Beaver. Я использовал python3.7 и pip 19, всегда с проблемой SSL .Если вы находитесь в Red Hat/CentOS:
работал на Python 2.7, а также. просто добавьте make и сделайте altinstallЕсли вы используете Windows и используете Anaconda, это работает для меня:
Я пробовал много других решений, которые не работали (переменная окружения PATH. )
Проблема может быть вызвана DLL файлами в папке Windows\System32 (например, libcrypto-1_1-x64.dll или libssl-1_1-x64.dll или другими), размещенными там другим программным обеспечением.
Нужно ли просто установить его или сделать что-то еще? Я только что установил его. В списке программ, установленных на моей системе, у меня есть три версии OpenSSL (две 64-битные версии и одна 32-битная версия, хотя я нахожусь на 64-битной системе). Я не в курсе, что установил их все, поэтому оставил их там. Спасибо, это сработало для меня. Система: Windows 10, Anaconda, Python 3.7Согласна с ответом от mastaBlasta. Работал на меня. Я столкнулся с той же проблемой, что и описание темы.
Окружающая среда: MacOS Sierra. И я использую Homebrew.
-
Переустановите openssl с помощью brew uninstall openssl, brew install openssl ;
В соответствии с рекомендациями Homebrew сделайте следующее:
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >>
Спасибо, хитрость в том, чтобы brew uninstall openssl, brew install openssl . Я попытался brew reinstall openssl который не имел никакого эффекта. Но деинсталляция / установка работает!Проблема, вероятно, вызвана отсутствием библиотеки.
Перед установкой python 3.6 убедитесь, что вы установили все библиотеки, необходимые для python.
Если вы находитесь на OSX и скомпилировали python из источника:
Установите openssl с помощью brew brew install openssl
Обязательно следуйте инструкциям brew, чтобы задать настройки CPPFLAGS и LDFLAGS . В моем случае я использую формулу [email protected] brew, и мне нужны эти 3 параметра для процесса сборки python для правильной ссылки на мою библиотеку SSL:
Предположим, что библиотека установлена в этом месте.
В Ubuntu это может помочь:
Почему мы на самом деле должны собрать Python из исходного кода для этого? Разве нет решения, которое работает со стандартными дистрибутивами Python? Я бы наивно надеялся, что добавление этого модуля было бы возможным без переопределения двоичного файла python, для которого мы не всегда легко знаем соответствующее местоположение источника, в работающей системе, которая не была недавно установлена. Я получаю предупреждение о том, что эта опция не распознана Мне пришлось добавить несколько «sudo» к этим командам, но они работали там, где другие ответы не дали результатов!Я столкнулся с той же проблемой на Windows 10. Моя очень специфическая проблема связана с моей установкой Anaconda. Я установил Anaconda и по пути Path/to/Anaconda3/ , там появляется python.exe . Таким образом, я вообще не устанавливал python, потому что Anaconda включает python. При использовании pip для установки пакетов, я обнаружил тот же отчет об ошибке, pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. ,
Решение было следующим:
1) вы можете снова скачать python на официальном сайте;
2) Перейдите в каталог, где находится "Python 3.7 (64-bit).lnk"
3) import ssl и exit()
4) введите cmd, например, "Python 3.7 (64-bit).lnk" -m pip install tensorflow , "Python 3.7 (64-bit).lnk" -m pip install tensorflow .
Я успешно установил Python 3.4 и Python 3.6 на свой локальный компьютер, но не могу устанавливать пакеты с расширением pip3 .
Когда я выполняю pip3 install <package> , я получаю следующую ошибку, связанную с SSL :
Вы явно установили pip3 на свой ubuntu с помощью команды sudo apt-get install python3-pip ??Пошаговое руководство по установке Python 3.6 и pip3 в Ubuntu
Установите необходимые пакеты для Python и ssl: $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
Откройте терминал в этом каталоге и запустите: $ ./configure
Сборка и установка: $ sudo make && sudo make install
Установите пакеты с помощью: $ pip3 install package_name
Спасибо! Я ходил по кругу, заставляя python3 работать с Ubuntu 14.04, пока не нашел этот список команд. Это сработало для меня. Большое спасибо. Одна вещь, которую я не мог осмыслить, - почему бы не начать с шага 4 и только один раз сделать "make; make install"? Работал в Ubuntu Beaver. Я использовал python3.7 и pip 19, всегда с проблемой SSL .Если вы используете Red Hat / CentOS:
работал и для python 2.7. просто добавьте make и сделайте altinstall Если вам нужен virtualenv, вам нужно запустить sudo /usr/local/bin/pip3.7 install virtualenv. Спасибо за такой ответ! отлично, у меня возникли проблемы с установкой python 2.7.13 для устаревшего образа докера, и мне нужно openssl-devel было его запустить python2.7 get-pip.pyЕсли вы работаете в Windows и используете anaconda, это сработало для меня:
Я пробовал много других решений, которые не работали (изменения переменной PATH среды . )
Проблема может быть вызвана тем, что библиотеки DLL в папке Windows \ System32 (например, libcrypto-1_1-x64.dll или libssl-1_1-x64.dll или другие) размещены там другим программным обеспечением.
Я его только что установил. В списке программ, установленных в моей системе, у меня есть три версии OpenSSL (две 64-битные версии и одна 32-битная версия, хотя я использую 64-битную систему). Я не знаю, что все они установлены, поэтому оставил их там. Если вы работаете в Windows и используете Anaconda, просто используйте Anaconda Prompt вместо cmd для запуска «pip install». Никаких дополнительных изменений DLL / SSL не потребуется. Я собирался сломать свой компьютер, использовал pycharm на многих машинах и ОС, но на этом новом Windows я установил anaconda, и, похоже, он сломал pip. Я просматривал примерно 2 часа, большое спасибо, дружище. <3У меня была аналогичная проблема с OSX 10.11 из-за установки memcached, который установил python 3.7 поверх 3.6.
ВНИМАНИЕ: pip настроен с местоположениями, требующими TLS / SSL, однако модуль ssl в Python недоступен.
Потратил часы на отключение openssl, переустановку, изменение путей .. и ничего не помогло. Смена версии openssl на более старую сработала:
Я нигде в Интернете не видел этого предложения. Надеюсь, это кому-то поможет.
У меня была такая же проблема с MacOS Catalina 10.5.4 (бета), теперь она работает. Спасибо! Для меня это было brew switch openssl 1.0.2s . Но это было все. Ты спас меня, спасибо! Пытаюсь это сделать, но мне постоянно говорят, что openssl не имеет версии "1.0.2e" в Подвале. openssl не имеет версии "1.0.2s" в Подвале. Антонио, Джеймс: какая у вас старая версия. В моем погребе была версия 1.0.2e, поэтому я использовал это. Я рад, что это помогло. Спасибо вам большое! Для меня ваше решение перехода на старую версию openssl сработало: brew switch openssl 1.0.2t я использую Mac OS Catalina 10.15.3. Надеюсь, поможет.Согласен с ответом mastaBlasta. Работал у меня. Я столкнулся с той же проблемой, что и в описании темы.
Среда: MacOS Sierra. И я использую Homebrew.
-
Переустановите openssl с помощью brew uninstall openssl; brew install openssl
Согласно подсказкам Homebrew, сделайте следующее:
Спасибо, хитрость есть brew uninstall openssl, brew install openssl . Я попробовал, brew reinstall openssl но безрезультатно. Но удаление / установка работает! пришлось бежать brew uninstall --ignore-dependencies opensslВ Ubuntu это может помочь:
Почему для этого нам действительно нужно собирать Python из исходников? разве нет решения, которое работает со стандартными дистрибутивами Python? Я бы наивно надеялся, что добавление этого модуля будет возможно без переопределения двоичного файла python, для которого мы не всегда можем легко узнать соответствующее исходное местоположение в живой системе, которая не была недавно установлена. Я получаю предупреждение о том, что эта опция не распознается Мне пришлось добавить несколько sudo к этим командам, но они работали там, где другие ответы не дали результата!Понижение версии openssl сработало для меня,
Вероятно, проблема вызвана отсутствием библиотеки.
Перед установкой python 3.6 убедитесь, что вы установили все библиотеки, необходимые для python.
Если вы используете OSX и скомпилировали Python из исходного кода:
Установите openssl с помощью brew brew install openssl
Обязательно следуйте инструкциям по настройке CPPFLAGS и LDFLAGS . В моем случае я использую [email protected] формулу пивоварения, и мне нужны эти 3 настройки для процесса сборки python, чтобы правильно ссылаться на мою библиотеку SSL:
Предполагая, что библиотека установлена в этом месте.
@GauravPaliwal, @mastaBlasta: Для меня переход на старую версию openssl сработал: brew switch openssl 1.0.2t я использую Mac OS Catalina 10.15.3. Надеюсь, поможет.Я столкнулся с той же проблемой в Windows 10. Моя очень специфическая проблема связана с моей установкой Anaconda. Я установил Anaconda, и по пути Path/to/Anaconda3/ появляется файл python.exe . Таким образом, я вообще не устанавливал python, потому что Anaconda включает python. При использовании pip для установки пакетов я обнаружил тот же отчет об ошибке pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. .
Решение было следующее:
1) вы можете повторно скачать python на официальном сайте ;
2) Перейдите в каталог, в котором "Python 3.7 (64-bit).lnk" находится
3) import ssl и exit()
4) введите cmd, "Python 3.7 (64-bit).lnk" -m pip install tensorflow например, .
Здесь все готово.
Не решение, но определенно выполняет свою работу. По крайней мере, помогает установить недостающие deps. Что я понял на своем локальном компьютере, так это то, что у меня были конфликтующие записи в моей переменной PATH для python (например, Anaconda 2.7 64-bit и Python 3.7 32-bit) Также, чтобы улучшить этот ответ, вы можете сохранить абсолютный путь в переменной и запустить его как: cmd /c $py .\main.py ( Powershell ) или cmd /c %py% .\main.py ( Dos ). Это запустит его в вашей существующей оболочке и может быть написано сценариемЕсли вы работаете в Windows и используете Anaconda, вы можете попробовать запустить команду «pip install . » в Anaconda Prompt вместо cmd.exe, как предлагает здесь пользователь willliu1995 . Для меня это было самое быстрое решение, не требующее установки дополнительных компонентов.
Я попытался МНОГО способов решить эту проблему, но ни один не решил. Сейчас я использую Windows 10.
Единственное, что сработало:
- Удалить Anaconda
- Удалите Python (я использовал версию 3.7.3)
- Установите Python еще раз (не забудьте отметить опцию автоматического добавления в PATH)
Затем я загрузил все необходимые библиотеки с помощью PIP . и работал!
Не знаю, почему и была ли проблема каким-то образом связана с Анакондой.
Моя проблема возникла, связанная с моей установкой Python, и была быстро решена путем повторной установки python3 и pip. я думаю, что он начал плохо себя вести после обновления ОС, но кто знает (в настоящее время я использую Mac OS 10.14.6)
Спасибо за этот ответ! В моем случае проблемы начались после обновления до Catalina (10.15.3), и я обнаружил, что вашего первого шага brew reinstall python3 --force было достаточно: pip после этого снова заработал , мне не нужно было переустанавливать pip .Вы можете сделать одно из этих двух:
- При установке Anaconda выберите параметр, чтобы добавить Anaconda в путь .
или
- Найдите эти (полные) пути в папке установки Anaconda и добавьте их в переменную среды :
\ Анаконда \ Библиотека \ mingw-w64 \ bin
\ Анаконда \ Библиотека \ usr \ bin
\ Anaconda \ Library \ bin
Добавьте указанные выше пути в системную переменную "Path", и ошибка больше не должна отображаться :)
Одна из альтернатив - использовать специальную «подсказку анаконды», в которой эти переменные среды настроены правильно.У меня была такая же проблема, и я смог ее решить, выполнив следующие действия:
в зависимости от химической завивки вам может не понадобиться sudo.
теперь должен быть в состоянии запустить
При установке пакетов:
или, в зависимости от perms, вы также можете добавить флаг --user следующим образом:
ssl Модуль является TLS / SSL обертка для доступа к операции Sytem (OS) гнездо ( Lib / ssl.py ). Поэтому, когда ssl модуль недоступен, есть вероятность, что у вас либо не установлены библиотеки OpenSSL ОС, либо эти библиотеки не были найдены при установке Python. Предположим, что это более поздний случай (он же: у вас уже установлен OpenSSL, но они неправильно связаны при установке Python).
Я также предполагаю, что вы устанавливаете из исходников. Если вы производите установку из двоичного файла (например, из файла Window .exe) или пакета (Mac .dmg или Ubuntu apt), вы мало что можете сделать с процессом установки.
На этапе настройки вашей установки python вам необходимо указать, где OS OpenSSL будет использоваться для связывания:
Итак, где вы найдете установленный каталог OpenSSL?
Ваша система может отличаться от моей, но, как вы видите, у меня установлено много разных библиотек openssl. На момент написания этой статьи python 3.8 ожидает openssl 1.0.2 или 1.1:
Python требует наличия библиотеки libssl, совместимой с OpenSSL 1.0.2 или 1.1 с X509_VERIFY_PARAM_set1_host ().
Поэтому вам нужно будет проверить, какие из этих установленных библиотек вы можете использовать для компоновки, например
Возможно, вам придется попробовать несколько или установить новую, чтобы найти библиотеку, которая подойдет для вашего Python и вашей ОС.
Ubuntu Установка Pygame запись процесса и совместное использование (в том числе удаления Пайтона, установка OpenSSL, установка Python3.7, установка Pygame)
содержание
Разговор перед: Я устанавливаю окружающую среду для Xubuntu 14.04, система поставляется с Python 2.7 и Python3.6, OpenSSL 1.0.1.
1. Удалите python3.6 (только чисто стремление к более высокой версии)
2. Загрузка установка OpenSSL-1.1.1B (из-за Python3.7 слишком новое обновление требования OpenSSL для OpenSSL1.0.2 или libressl2.64 (исключая) позднюю версию)
Шаг 1: Распакуйте установка
2 в коде ниже плюс --prefix== Помещает различные файлы в папке (Т.е., использовать, чтобы указать путь для хранения программы), Например, он будет помещен в / USR / SSL (может быть, нет SSL в текущем / USR каталога, поскольку он создается при установке)
PS. 1, не указывает префикс, запускаемый файл По умолчанию в / USR / местные /bin, файл библиотеки По умолчанию / USR / местные / Библиотека, Профиль По умолчанию помещается в / USR / местные / и т.д. Другие файлы ресурсов Помещенный / USR / местные / доли.
2, указать префикс, поместите его непосредственно в папке.
4 Причина SUDO является создание SSL папки в / USR (см 2), что требует привилегий суперпользователя.
После завершения, как показано на рисунке
Шаг 2: Создайте мягкое соединение
После ввода команды OpenSSL версии, если эта цифра еще 1.0.1.
1 Если «/ USR / бен / OpenSSL» не может быть создан, если файл уже существует, то он будет идти непосредственно, чтобы удалить его.
Если ввести версию OpenSSL из OpenSSL версии
Успешно вернулся в номера версии 1.1.1b
3. Установить python3.7
Шаг 1: Установите Python Нажмите на следующие вещи, чтобы убедиться, что не будет никаких проблем
1.sudo apt-get dist-upgrade
2.sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
3.sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
4.sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
5.sudo apt-get install libffi-dev
Шаг 2: Установите Python3.7
3 - с-OpenSSL должен указать 2. 2. Python3.7 установлен в / USR / местные / Библиотека в / USR / местные / Библиотека)
Потому что я запустил команду более одного раза. Так что это кажется прекрасным.
К тому времени в python, когда я это делаю:
Я получаю ошибки. В частности:
Есть ли проблема совместимости? Являются ли две последние версии несовместимыми друг с другом? Кто-нибудь видел это раньше?
Информация о версии, которую я имею:
И для python-openssl у меня есть:
При использовании флага -v на python я получаю:
Вы можете удовлетворить отсутствующую зависимость, выполнив следующие действия:
установить библиотеки libffi, необходимые для криптографии
затем установите криптографию:
Мне нужно было переустановить пакеты:
, тогда он начал работать для меня.
Я просто попробовал это на B +; кажется, работает для меня:
Я не запускал «apt-get install openssl», хотя - только один для «python-openssl». Моя версия Python, похоже, идентична вашей версии: какая версия openssl вам сообщается?
Возможно, попробуйте импорт, который, по-видимому, вызывает ошибку, по одному за раз - это работает в моей системе:
Однако я попробовал другой импорт, который упоминается последним в стеке, и эта ошибка DOES при попытке импортировать его напрямую:
Попробуйте запустить python с флагом '-v':
Я получаю следующее для сравнения:
И вот SHA1 файлов, на которые ссылаются здесь:
Возможно, файлы * .so отсутствуют /неверны в вашей системе?
ИЗМЕНИТЬ: похоже, что моя среда загружается из другой структуры каталогов из вашей.
Дополнительно (чтобы ответить на ваш комментарий о SHA1) - я не могу вспомнить, должен ли я установить конкретный пакет, чтобы получить « shasum '- видимо, это Perl Script. Но все, что может генерировать контрольную сумму (или даже при нажатии на кнопку «ls -l»), я думаю.
Один последний бит информации, в случае, если он помогает кому-то сузить проблему
У меня только что была очень похожая проблема на Pi (B).
import OpenSSL привел к тому же ошибочному ответу. Запуск pip list показал pyOpenSSL как v 0.14.
После исчерпания всех других идей я удалил pyOpenSSL, используя sudo pip uninstall pyOpenSSL
pip list , затем показал pyOpenSSL как v0.13. Я сделал sudo pip uninstall pyOpenSSL 2 или 3 раза, но pip list все еще показывает pyOpenSSL (0.13)
Затем я обнаружил, что import OpenSSL не показывал проблему, как раньше. Также начальная проблема, с которой я столкнулась, исчезла из-за магического исчезновения.
Я загрузил пакет, и он содержал . Я побежал:
затем я установил MinGW32, и теперь компиляция не работает. Конец ошибок компиляции содержит:
протокол SSL/_ssl2.c: 1561: error:' CRYPTO_LOCK ' undeclared (первое использование в этой функции)
ошибка: команда " gcc " не удалось со статусом выхода 1
возьмите в OpenSSL и libgw32c пакеты из проекта gnuwin32 (загрузите "файлы разработчика"!) и извлеките их там, где вы установили gnuwin32 - или если у вас еще нет инструментов gnuwin32, вы можете извлечь его в любом месте (например, "C:\Program Files\gnuwin32"). Введите каталог gnuwin32 в "setup.py" файл (заменить "C:\Utils\GnuWin32 в строке 154).
тогда вы можете построить ssl модуль без проблем. Я тестировал его сам, используя GCC "4.3.2-ТДМ-2 mingw32" и с командной строкой setup.py build -cmingw32 ( -cmingw32 forces MinGW, поскольку у меня также установлен компилятор Microsoft). Выполнить setup.py install после успешной сборки для установки ssl .
мне пришлось использовать следующую модификацию подхода Андидога:
без опции -- skip-build установка попытается построить снова и снова пожаловаться на MSVC:
кроме того, первоначально при использовании команды сборки у меня было много ошибок, таких как:
Это было потому, что я изначально установил 64-битную версию Python 2.5.4 (python-2.5.4.для amd64.компания MSI.) Я удалил это и установил версию 32bit (python-2.5.4.компания MSI.) Это включает в себя libpython25.файл, который искала команда build.
я использовал ответы AndiDog и Saxon Druce, которые на 100% правильны, но могут потребоваться некоторые разъяснения для неопытных пользователей, таких как я:
это только для пользователей Windows.
установить python 2.5.2 32 бит - это было важно для меня, так как у меня есть система x64, и я впервые установил python 2.5.2 x64, и предлагаемое решение не сработало для меня вообще, поэтому 32 бит.
установить GCC - http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/Previous/1.1006.0/tdm-gcc-4.5.2.exe/download, я использовал последнюю версию, не забудьте выбрать опцию Добавить в переменную PATH во время установки, или вам придется добавить путь к папке GCC bin в переменную среды "путь" самостоятельно.
Blockquote в OpenSSL и пакеты libgw32c из проекта gnuwin32 (загрузите "файлы разработчика"!) и извлеките их там, где вы установили gnuwin32 - или если у вас еще нет инструментов gnuwin32, вы можете извлечь его в любом месте (например, "C:\Program Files\gnuwin32"). Введите каталог gnuwin32 в "setup.py" файла библиотеки ssl (заменить "C:\Utils\GnuWin32 в строке 154).
run python setup.py build -cmingw32 (самый простой способ-запустить cmd и перейти в каталог, в который была извлечена библиотека ssl) - это скомпилирует библиотеку ssl
run python setup.py install --skip-build чтобы установить его
Это должно сделать это.
Я действительно удивлен, что им не удалось добавить библиотеку ssl в App engine sdk или Python installer за все эти годы, возможно, люди не используют ее.
поскольку TDM-GCC 4.6.1 был выпущен в сентябре 2011 года. Установщик TDM-GCC загрузит последнюю версию GCC (4.6.1), даже если tdm-gcc-4.5.2.exe используется. GCC 4.6.1 вызовет ошибку сборки GCC "ошибка: нераспознанный параметр командной строки" - mno-cygwin " это потому, что-MnO-cygwin устарел в GCC 4.6.1. Чтобы скомпилировать пакет ssl против python 2.5, нам нужно использовать GCC версии 4.5.2.
после установки TDM-GCC вам нужно сделать дополнительный шаг из инструкции к @BanditoBunny.
Читайте также: