По умолчанию PIP в виртуальной среде python является древним, как это исправить? - PullRequest
1 голос
/ 21 апреля 2020

Я использовал python3 -m venv для создания виртуальной среды, в этой виртуальной среде мои настройки:

python 3.5.2 pip 8.1.1 Ma c OS 10.13.6

Эта версия pip чрезвычайно СТАРАЯ и приводит к проблеме, описанной ниже: как заставить venv установить более новую версию pip?

Всякий раз, когда я запускаю "pip install", я получаю ошибку форма:

Could not fetch URL https://pypi.python.org/simple/<any_package>/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:645) - skipping 

Я пробовал это с = flask, gunicorn, и запросами, и считаю, что это не проблема, связанная со спецификацией пакета c.

То, что я пытался решить проблему:

Я наткнулся на эту ссылку, в которой предлагалось как-то обновить пип: https://github.com/pypa/pip/issues/5226

Так что я обновленный pip до последней версии: pip 20.0.2 из /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pip (python 3.5)

Но проблема осталась. Тогда я обновил venv до последней версии.

Но проблема снова осталась.

Я провел еще несколько исследований в Интернете и наткнулся на следующую проблему с github: https://github.com/pypa/pip/issues/5363

, которая в рамках текста задачи была очень похожа на мою проблему TLS , но ни один из ответов там, похоже, не смог решить проблему (вставка каждого из них привела к одной и той же проблеме TLS).

Наконец я нашел что-то работающее:

Из этого вопроса: Обновление пипа / установка django - [SSL: TLSV1_ALERT_PROTOCOL_VERSION]

Решение ниже:

 curl https://bootstrap.pypa.io/get-pip.py | python3

Обновляет мой "виртуальный пипс enviro mnet" на правильную версию. Но мне еще предстоит выяснить, как сделать пип по умолчанию (когда я создаю новую виртуальную среду) актуальным.

1 Ответ

1 голос
/ 22 апреля 2020

На сегодняшний день это невозможно.

Начиная с Python 3.9 должно быть возможно сделать что-то вроде path/to/pythonX.Y -m venv --upgrade-deps .venv, и это повысит пипс и setuptools во вновь созданной виртуальной среде:

Вместо этого вы можете попробовать virtualenv , если это лучше подходит для вашего рабочего процесса. Насколько я знаю, он всегда пытается установить последнюю версию pip в создаваемых виртуальных средах.

В конце документации venv приведен пример кода, показывающего, как создать инструмент для загрузки и установки обновленных pip и * 1046. * setuptools :

Пользователь wim сделано интересное предложение здесь:

У меня есть инструмент под названием ve , который делает нечто подобное:

Есть несколько ответов на аналогичные вопросы, предлагающие изменить файлы wheel в комплекте с surepip в стандартной библиотеке Python, но я бы не советовал.

Подобные вопросы:

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