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

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-сертификат: невозможно подключиться к 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 сделать altinstall python3.6

Создано virtualenv:

python3.6 -m venv py36venv источник py36venv/bin/activate

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

(py36venv) pip3 install pep8

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

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

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

4b9b3361

Ответ 1

Я выполнил следующие шаги для установки 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

Validation:

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

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

using pip:

(testenv) [email protected]:~$ 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) [email protected]:~$ pip list

pep8 (1.7.0) 
pip (9.0.1)
setuptools (28.8.0)

Ответ 2

Я наткнулся на ту же проблему, когда попытался создать виртуальную среду, использующую 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

Итак, в основном это похоже на: fooobar.com/questions/5243/...

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

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

Решение

Установить openssl

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

Изменить модуль /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"

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

Running ./configure --prefix=<some_path>` make make install mkvirtualenv --python=<some_path/bin/python3.6> foo снова помогло

Надеюсь, это поможет кому-то:)

Ответ 3

Запуск 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 name.

Что решило проблему в моем случае (Linux Mint 18.1, openssl уже установлен) редактировал setup.py в папке Python-3.6.0 добавив там путь туда, где установка 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
                         )

Ответ 4

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

sudo yum install openssl-dev

Тогда:

./configure --enable-optimizations
make altinstall

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