ImportError: нет модуля с именем _ssl - PullRequest
42 голосов
/ 26 февраля 2011

Ubuntu Maverick с Python 2.7:

Я не могу понять, что делать, чтобы устранить следующую ошибку импорта:

>>> import ssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/ssl.py", line 60, in <module>
   import _ssl             # if we can't import it, let the error propagate
ImportError: No module named _ssl

ОБНОВЛЕНИЕ: Iперекомпилировал источник.Мне не удалось выяснить, как добавить параметр --with-ssl, о котором говорится в ответах ниже, вместо этого я заставил это работать, отредактировав строки, касающиеся SSL, в /Modules/Setup.dist.

Ответы [ 8 ]

60 голосов
/ 27 июля 2015

Не имеет отношения к исходному вопросу, но поскольку это первый результат Google ... Я нажал на Google AppEngine и должен был добавить:

libraries:
- name: ssl
  version: latest

к app.yaml per: https://cloud.google.com/appengine/docs/python/sockets/ssl_support

Пожалуйста, обратите внимание: это похоже на версию Python 2.7.9, но не на 2.7.10 или 2.7.11.

26 голосов
/ 26 февраля 2011

Вы строили Python из исходного кода? Если это так, вам нужна опция --with-ssl при сборке.

12 голосов
/ 29 октября 2013

Если вы собрали 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 ...) должна помочь. В любом случае, вот как я это сделал: -)

7 голосов
/ 18 сентября 2013

У меня была точно такая же проблема. Я исправил это без восстановления Python, как показано ниже:

1) Найдите другой сервер с той же архитектурой (i386 или x86_64) и той же версией Python (пример: 2.7.5). Да, это сложная часть. Вы можете попробовать установить python из исходников на другой сервер, если не можете найти сервер с такой же версией python.

2) На этом другом сервере проверьте, работает ли импорт ssl. Это должно работать.

3) Если это сработает, попробуйте найти библиотеку _ssl следующим образом:

[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 работает нормально.

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

6 голосов
/ 15 июня 2016

Так как --with-ssl больше не распознается, я только что установил libssl-dev:

sudo apt-get install libssl-dev 

Чтобы перезапустить make first cleanup:

make clean

Затем запуститеснова и выполните следующие команды одну за другой:

./configure
make
make test
make install

Для получения дополнительной информации о OpenSSL посетите Справочную страницу Ubuntu по OpenSSL .

2 голосов
/ 26 февраля 2011

Подчеркивание обычно означает модуль C (т.е. DLL), и Python не может его найти.Вы сами создали Python?Если это так, вам нужно включить поддержку SSL.

0 голосов
/ 16 июля 2015

В Solaris 11 мне пришлось изменить файл setup.py для включения / opt / csw / include / openssl в путь поиска SSL.

Уве

0 голосов
/ 26 февраля 2011

Либо установите дополнительные пакеты для python-ssl, используя менеджер пакетов, либо перекомпилируйте Python, используя -with-ssl (требуются установленные заголовки / библиотеки OpenSSL).

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