sys.path
, чтобы найти все модули (кроме встроенных). /usr/lib/pythonX.X/site-packages
(опять же, см. sys.path
). И рассмотрите возможность использования встроенного управления пакетами Python (вместо pip
или easy_install
, плюс yolk
), а пакеты в дистрибутивах Linux - поддерживаемые хранилища, как правило, устарели. Вы построили Python из исходного кода? Если это так, вам понадобится опция --with-ssl
при создании.
Либо установите дополнительные пакеты для python-ssl, используя ваш диспетчер пакетов, либо перекомпилируйте Python, используя -with-ssl (для этого необходимо установить заголовки / библиотеки OpenSSL).
Если вы построили Python из исходного кода, это зависит только от зависимостей: поскольку вы пропустили OpenSSL lib, python молча завершил установку модуля _ssl. Вы можете увидеть его в финальном отчете команды make:
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _sqlite3 _ssl
_tkinter bsddb185 dbm
dl gdbm imageop
sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Установка OpenSSL lib в любом из стандартных путей библиотеки (/usr/lib
, /usr/local/lib
...) должна сделать трюк. Во всяком случае, так я и сделал: -)
sudo apt-get build-dep python3.4
– gengkev
11 July 2015 в 21:51
Не связано с исходным вопросом, но поскольку это первый результат Google ... Я попал в это приложение Google AppEngine и должен был добавить:
libraries:
- name: ssl
version: latest
в app.yaml за: https://cloud.google.com/appengine/docs/python/sockets/ssl_support
Пожалуйста, обратите внимание: это, похоже, работает до версии 2.4.9 Python но не для 2.7.10 или 2.7.11.
В Solaris 11 мне пришлось изменить setup.py, чтобы включить / opt / csw / include / openssl в SSL, включая путь поиска.
Уве
У меня была точно такая же проблема. Я исправил его, не перестраивая python, следующим образом:
1) Найдите другой сервер с той же архитектурой (i386 или x86_64) и ту же версию python (пример: 2.7.5). Да, это трудная часть. Вы можете попробовать установить python из источников на другой сервер, если вы не можете найти какой-либо сервер с той же версией python.
2) На этом другом сервере проверьте, работает ли импорт ssl. Он должен работать.
3) Если он работает, попробуйте найти _ssl lilbrary следующим образом:
[root@myserver]# find / -iname _ssl.so
/usr/local/python27/lib/python2.7/lib-dynload/_ssl.so
4) Скопируйте этот файл на исходный сервер. Используйте ту же папку назначения: /usr/local/python27/lib/python2.7/lib-dynload/
5) Владелец и разрешения двойной проверки:
[root@myserver]# chown root:root _ssl.so
[root@myserver]# chmod 755 _ssl.so
6) Теперь вы должны иметь возможность импортировать ssl.
Это сработало для меня в среде CentOS 6.3 x86_64 с python 2.7.3. Также я установил python 2.6.6, но с ssl работал нормально.
Надеюсь, что это поможет.
linuxbrew
, а затем установите pyenv
. Создайте такую же версию python с помощью pyenv
и скопируйте _ssl.so. Мне также нужно удалить _ssl_failed.so
из каталога ~/.linuxbrew/Cellar/python/2.7.10/lib/python2.7/lib-dynload
.
– Ask and Learn
1 June 2015 в 05:29
locate ssl.so
или locate _ssl.so
.
– danger89
10 February 2017 в 16:28
Поскольку --with-ssl больше не распознается, я только что установил libssl-dev:
sudo apt-get install libssl-dev
Чтобы перезапустить make, сначала очистить:
make clean
Затем запустите снова и выполните следующие команды один за другим:
./configure
make
make test
make install
. Для получения дополнительной информации о OpenSSL посетите страницу справки Ubuntu на OpenSSL .
Подчеркивание обычно означает модуль C (т. е. DLL), и Python не может его найти. Вы сами строили питон? Если это так, вам необходимо включить поддержку SSL.
configure
. В общем случае параметры конфигурации, параметры компиляции и т. Д. Являются параметрамиconfigure
- то, что он на самом деле делает, запускается во многих исходных файлах, делая текстовые замены (и часто создавая новые файлы заголовков), прежде время сборки. – jelford 7 January 2012 в 11:20--with-ssl
, похоже, больше не распознается ... – Emmanuel 29 October 2013 в 14:32--with-ssl
при создании из исходного кода, поскольку по умолчанию он будет искать ssl. Убедитесь, что вы установилиopenssl-devel
илиlibssl-dev
(имя в зависимости от вашего дистрибутива) и / или взломали файлsetup.py
в качестве упомянутого @ACyclic, чтобы убедиться, что установка Python правильно указывает на заголовки ssl. – Phil 29 December 2016 в 19:49