pip3 устанавливается внутри виртуальной среды с ошибкой python3.6 из-за недоступности модуля ssl

(py36venv) vagrant @ pvagrant-dev-vm: / vagrant / venvs $ pip3 install pep8

pip настроен с местоположениями, требующими TLS / SSL, однако модуль ssl в Python недоступен.

Сбор pep8 Не удалось получить URL https://pypi.python.org/simple/pep8/ : Возникла проблема с подтверждением сертификата ssl: не удалось подключиться к URL-адресу HTTPS, поскольку модуль SSL недоступен. - пропуская

Не удалось найти версию, удовлетворяющую требованию pep8 (из версий:) Соответствующий дистрибутив для pep8 не найден

Справочная информация - попытка перехода на Python 3.6.

Установил python3.6 с помощью следующих команд:

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz

tar -xvf Python-3.6.0.tgz

cd Python-3.6.0
./configure --enable-optimizations
make -j8 sudo make altinstall python3.6

Создано virtualenv:

python3.6 -m venv py36venv

источник py36venv / bin / активировать

Пытался установить pep8

(py36venv) pip3 установить pep8

pip настроен с местоположениями, требующими TLS / SSL, однако модуль ssl в Python недоступен. Сбор pep8

Не удалось получить URL https://pypi.python.org/simple/pep8/: там возникла проблема с подтверждением сертификата ssl: не удалось подключиться к URL-адресу HTTPS, поскольку

Модуль SSL недоступен. - skipping Не удалось найти версию, удовлетворяющую требованию pep8 (из версий:) Соответствующий дистрибутив для pep8 не найден


person Py_minion    schedule 05.01.2017    source источник
comment
У вас установлен libssl-dev, указывает ли Makefile на правильный ssl, включен ли он в make-файле? См. Также: stackoverflow.com/questions/5937337/   -  person jmunsch    schedule 05.01.2017
comment
Раскомментировал следующее - ** SSL = / usr / local / ssl _ssl _ssl.c \ -DUSE_SSL -I $ (SSL) / include -I $ (SSL) / include / openssl \ -L $ (SSL) / lib -lssl -lcrypto **   -  person Py_minion    schedule 05.01.2017
comment
Если вы нашли решение, смело отвечайте на свой вопрос.   -  person jmunsch    schedule 11.01.2017


Ответы (6)


Я выполнил следующие шаги для установки python3.6 в ubuntu 14.04, и установка virtualenv pip работает нормально.

Установка Python 3.6:

sudo apt-get install python3-dev libffi-dev libssl-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz  
tar xvf Python-3.6.0.tgz
cd Python-3.6.0
./configure --enable-optimizations  
make -j8  
sudo make altinstall
python3.6

Если вы видите следующую ошибку -

zipimport.ZipImportError: невозможно распаковать данные; zlib недоступен make: *** [altinstall] Ошибка 1

пытаться:

sudo apt-get install zlib1g-dev

Проверка:

Создайте virtualenv в python3.6:

python3.6 -m venv testenv
source testenv/bin/activate
pip install pep8

используя pip:

(testenv) vagrant@pvagrant-dev-vm:~$ pip install pep8
*Collecting pep8
  Downloading pep8-1.7.0-py2.py3-none-any.whl (41kB)
    100% |████████████████████████████████| 51kB 4.1MB/s
Installing collected packages: pep8
Successfully installed pep8-1.7.0*

(testenv) vagrant@pvagrant-dev-vm:~$ pip list

pep8 (1.7.0) 
pip (9.0.1)
setuptools (28.8.0)
person Py_minion    schedule 11.01.2017
comment
Что делает -j8 в make -j8? - person tommy.carstensen; 25.03.2017
comment
-j [задания], --jobs [= задания] Задает количество заданий (команд) для одновременного выполнения. Если имеется более одной опции -j, действует последняя. Если опция -j указана без аргумента, make не будет ограничивать количество заданий, которые могут выполняться одновременно. Надеюсь, это будет полезно, для получения дополнительной информации обратитесь к страницам руководства по make - person Py_minion; 25.03.2017
comment
Примечание. Компиляция и установка занимает довольно много времени (конечно, в зависимости от вашей системы). На восьмиядерном процессоре AMD FX (tm) -9590 у меня ушло ~ 20 минут, но это сработало. - person MikeyE; 04.08.2017
comment
Вы говорите, что если вы компилируете с отсутствующим libssl-dev, вам нужно переустановить? - person stephen; 25.12.2017
comment
@ surfer190 Правильно! Я забыл установить libssl-dev и столкнулся с ошибкой, описанной в ОП. После установки libssl-dev, повторной компиляции и повторной установки pip работает без проблем. - person MikeyE; 25.03.2018
comment
Действительно ли требуется libffi-dev? Я вроде построил и установил без него. - person user3183018; 06.04.2018

Я столкнулся с той же проблемой, когда пытался создать виртуальную среду с использованием python3.6.0. Вот мое решение для Mac OS X 10.12.2 (комментарий Py_minion был довольно близок):

Настраивать

Я создал среду, выполнив следующие шаги: загрузка python3.6.0 запущена

./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo

В основном похоже на: https://stackoverflow.com/a/11301911/1286093

Признаком того, что у вас такая же проблема, как у меня, будет аналогичная строка при запуске make

The necessary bits to build these optional modules were not found: _ssl

Решение

Установить openssl

brew install openssl
brew unlink openssl && brew link openssl --force

Изменить Module / Setup или Module / Setup.dist

Вы можете найти эти файлы в каталоге загруженной версии Python.

Прокомментируйте и, при необходимости, измените строки 209 - 211 (мне пришлось изменить переменную SSL на мое местоположение openssl).

SSL=/usr/local/opt/openssl <---- THIS DEPENDS ON YOUR INSTALLATION
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

Учитывая, что это было расположение openssl

Установить переменные среды

export CFLAGS="-I$(brew --prefix openssl)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib"

сделать и снова установить

Бег

./configure --prefix=<some_path>`
make
make install
mkvirtualenv --python=<some_path/bin/python3.6> foo

снова сделал трюк для меня

person maves    schedule 13.02.2017
comment
Для тех, у кого нет sudo и brew: openssl можно получить с openssl.org - person tommy.carstensen; 25.03.2017

Запуск make сообщил мне в выводе оболочки:

The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm              
_sqlite3              _ssl                  _tkinter           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

Что решило проблему в моем случае (Linux Mint 18.1, openssl уже установлен) редактировал файл setup.py в папке Python-3.6.0, добавляя туда < / strong> путь, по которому установка openssl поместила файл ssl.h в моей системе в (/usr/include/openssl/ssl.h). Вот раздел, в который я добавил строку '/ usr / include':

    # Detect SSL support for the socket module (via _ssl)
    search_for_ssl_incs_in = [
                          '/usr/local/ssl/include/',
                          '/usr/contrib/ssl/include/',
                          '/usr/include/'
                         ]
    ssl_incs = find_file('openssl/ssl.h', inc_dirs,
                         search_for_ssl_incs_in
                         )
person Claudio    schedule 14.03.2017
comment
Я так счастлив, что нашел ваш ответ, он устранил эту проблему для меня (Ubuntu 16.04) - person AnaPana; 24.05.2017
comment
Это работает на моем Ubuntu 16.04. Это должен быть самый популярный ответ. - person waqasgard; 04.12.2018

Я решил эту проблему на Ubuntu-16.04.1. Для начала нужно установить необходимые библиотеки. Чтобы установить открытый терминал (Ctrl + Alt + T), введите;

 sudo apt-get install build-essential checkinstall
 sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

После этого перейдите в каталог, в котором находится ваш файл python, затем переконфигурируйте и переустановите python3.6.

 cd /opt/Python3.6/
./configure
 make 
sudo make install

ПРИМЕЧАНИЕ
Если вы установили Python3.6 через ppa, переустановите его снова;

sudo apt-get install python3.6

Теперь вы можете использовать pip3.6

person ozcanyarimdunya    schedule 10.02.2018
comment
Работал как шарм на debian (я установил python3.6 из исходников). Спасибо. - person byxor; 21.02.2019

Я столкнулся с той же ошибкой при сборке Python 3.6.1 из исходного кода под CentOS 7. Для CentOS7 мне сначала пришлось:

sudo yum install openssl-dev

Потом:

./configure --enable-optimizations
make altinstall

Теперь pip3.6 работает :-)

person Dániel Sali    schedule 12.06.2017
comment
Такая же конфигурация :) - person ThanhLoyal; 05.10.2017
comment
РАБОТАЕТ, но для RHEL 7.3 это sudo yum install openssl-devel - person FormerAtariUser; 10.04.2018

Полный сценарий можно найти ЗДЕСЬ.

Установить необходимые компоненты

Для RHEL / CentOS

sudo yum -y install gcc gcc-c++ zlib zlib-devel libffi-devel openssl-devel wget

Для Ubuntu / Debian

sudo apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev wget

Скачать Python

Измените версию Python, которую хотите

Версии Python

cd /var/tmp sudo wget https://www.python.org/ftp/python/3.x.x/Python-x.x.x.tgz sudo tar xf Python-3.*.tgz cd Python-3*

Настроить / Сделать / Установить

sudo ./configure --enable-optimizations --enable-shared --prefix=/usr/local sudo make && make altinstall

Очистить общую библиотеку и добавить в путь

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

sudo make && make altinstall sudo strip /usr/local/lib/libpython3.7m.so.1.0 sudo echo 'export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib' >> /etc/profile.d/python.sh sudo echo 'export PATH=${PATH}:~/usr/local/bin/' >> /etc/profile.d/python.sh sudo echo '/usr/local/lib' >> /etc/ld.so.conf sudo ldconfig

Ссылка

person JerodG    schedule 06.02.2018