Подтвердить что ты не робот

ImportError: нет модуля с именем _ssl

Ubuntu Maverick w/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

UPDATE: Я перекомпилировал источник. Мне не удалось выяснить, как добавить опцию --with-ssl ответы ниже, вместо этого я получил это для работы, отредактировав строки в SSL в/Modules/Setup.dist.

4b9b3361

Ответ 1

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

Ответ 2

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

libraries:
- name: ssl
  version: latest

до app.yaml за: https://cloud.google.com/appengine/docs/python/sockets/ssl_support

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

Ответ 3

Если вы создали 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 name.

Установка OpenSSL lib в любом из стандартных путей библиотеки (/usr/lib, /usr/local/lib...) должна сделать трюк. Во всяком случае, так я и сделал: -)

Ответ 4

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

sudo apt-get install libssl-dev 

Чтобы перезапустить make сначала выполните очистку:

make clean

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

./configure
make
make test
make install

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

Ответ 5

У меня была точно такая же проблема. Я исправил его без восстановления python следующим образом:

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

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

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

[[email protected]]# find / -iname _ssl.so
/usr/local/python27/lib/python2.7/lib-dynload/_ssl.so

4) Скопируйте этот файл на исходный сервер. Используйте ту же папку назначения: /usr/local/python 27/lib/python2.7/lib-dynload/

5) Двойной проверить владельца и разрешения:

[[email protected]]# chown root:root _ssl.so
[[email protected]]# chmod 755 _ssl.so

6) Теперь вы сможете импортировать ssl.

Это работало для меня в среде CentOS 6.3 x86_64 с python 2.7.3. Также я установил python 2.6.6, но с ssl работал нормально.

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Уве

Ответ 9

Я нашел какое-то решение:

если вы используете centos, попробуйте:

s1

yum install openssl-devel -y

затем, когда вы компилируете, добавьте --with-ssl, вот так

./configure prefix=/usr/local/share/python3 --with-ssl

s2

- установить зависимую библиотеку, сделать общий доступ

yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
wget http://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config --prefix=$HOME/openssl shared zlib
make && make install

- настроить общий путь к библиотеке ld, чтобы компиляция могла его найти

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> $HOME/.bash_profile
source $HOME/.bash_profile

(у пользователя zsh есть некоторые различия с .zsh_profile) - скомпилировать с помощью openssl

 ./configure prefix=/usr/local/share/python3 --with-openssl=$HOME/openssl