Виртуальная среда Python имеет более старую версию PIP, чем та, которая ее создала ... почему и как я могу исправить эту проблему с версиями? - PullRequest
0 голосов
/ 06 мая 2018

Мой вопрос похож на другой вопрос, который был задан по поводу Python3 , поэтому, возможно, ответ тот же - если так, то я был бы признателен, если бы кто-то смог прояснить это и пойти дальше, ответив на вопрос дополнительные вопросы размещены здесь, поскольку там, на самом деле, нет хорошего ответа относительно того, ПОЧЕМУ это происходит и КАК избежать этого без непредвиденных последствий. Возможно, с 2.7 есть лучший?

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

dhcp--41:VO$ virtualenv -p 
/usr/local/Cellar/python@2/2.7.15/bin/python env
Running virtualenv with interpreter 
/usr/local/Cellar/python@2/2.7.15/bin/python
New python executable in /Users/jbs/PycharmProjects/VOSW- VWN/env/bin/python2.7
Also creating executable in /Users/jbs/PycharmProjects/VOSW-VWN/env/bin/python
Installing setuptools, pip, wheel...done.

Мы убедились, что переводчик 2.7.15

dhcp--41:VO$ source env/bin/activate
(env) dhcp--41:VO jbs$ python
Python 2.7.15 (default, May  1 2018, 16:44:14) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

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

(env) dhcp--41:VO$ pip freeze
wheel==0.26.0
You are using pip version 8.0.2, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Теперь мы покинем окружающую среду и остановимся снаружи:

(env) dhcp--41:VO$ deactivate
dhcp--41:VO$ pip freeze
absl-py==0.2.0

Здесь не дается никаких предложений по обновлению, несмотря на то, что у нас есть та же самая версия python (если я правильно понимаю), как мы проверим следующее:

dhcp-18--41:VO$ python
Python 2.7.15 (default, May  1 2018, 16:44:14) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Почему он установил другую версию pip? Или, возможно, почему в виртуальной среде по умолчанию используется другая версия? Это кажется мне очень странным. Как я могу убедиться, что это не происходит каждый раз, когда я создаю новую виртуальную среду? Любой вклад будет наиболее полезным!

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Новые

Если вы хотите «установить патч» на ваш установленный python, просто измените версии, перечисленные в ensurepip/__init__.py, и замените два файла в ensurepip/_bundled. Вы можете найти это местоположение, запустив find * | grep ensurepip из каталога, где установлен python. В macOS с Homebrew это местоположение: /usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ensurepip

Вам также нужно удалить каталог ensurepip/__pycache__, содержащий файлы .pyc.

Мое старое исправление во время сборки:

Вы можете обновить связанные версии pip и setuptools, исправив Python перед сборкой из исходного кода. Следующий патч обновит связанные версии pip и setuptools до текущей версии, доступной сегодня. Вы захотите вызвать configure со следующей опцией: --with-ensurepip=upgrade

Эти whl файлы загружаются из PYPI здесь:

https://pypi.org/project/pip/#files

https://pypi.org/project/setuptools/#files

diff -ru Python-3.7.1/Lib/ensurepip/__init__.py Python-3.7.1.new/Lib/ensurepip/__init__.py
--- Python-3.7.1/Lib/ensurepip/__init__.py  2018-10-20 06:04:19.000000000 +0000
+++ Python-3.7.1.new/Lib/ensurepip/__init__.py  2018-11-27 02:36:19.301655008 +0000
@@ -8,9 +8,9 @@
 __all__ = ["version", "bootstrap"]


-_SETUPTOOLS_VERSION = "39.0.1"
+_SETUPTOOLS_VERSION = "40.6.2"

-_PIP_VERSION = "10.0.1"
+_PIP_VERSION = "18.1"

 _PROJECTS = [
     ("setuptools", _SETUPTOOLS_VERSION),
Only in Python-3.7.1/Lib/ensurepip/_bundled: pip-10.0.1-py2.py3-none-any.whl
Only in Python-3.7.1.new/Lib/ensurepip/_bundled: pip-18.1-py2.py3-none-any.whl
Only in Python-3.7.1/Lib/ensurepip/_bundled: setuptools-39.0.1-py2.py3-none-any.whl
Only in Python-3.7.1.new/Lib/ensurepip/_bundled: setuptools-40.6.2-py2.py3-none-any.whl
0 голосов
/ 06 мая 2018

Ваша pip внешняя виртуальная среда - /usr/local/bin/pip, что, скорее всего, означает, что она использует /usr/local/bin/python или /usr/bin/python. Но вы создали виртуальную среду, используя другой питон - /usr/local/Cellar/python@2/2.7.15/bin/python. Вы можете проверить его pip версию с

/usr/local/Cellar/python@2/2.7.15/bin/pip --version

или

/usr/local/Cellar/python@2/2.7.15/bin/python -m pip --version

Чтобы обновить pip, вам нужно запустить

/usr/local/Cellar/python@2/2.7.15/bin/python -m pip install -U pip

И обновить pip внутри виртуальной среды

python -m pip install -U pip

после активации виртуальной среды.

...