Эта ошибка очень похожа на # 5432 "pip install --upgrade pip breaks pip, still".
Окружающая обстановка
Я использую пакетный менеджер Homebrew: Homebrew 2.1.89-07-23
Описание
В исходной установке brew install python
/usr/local/bin/pip3
является символической ссылкой. В конце концов он достигает своего целевого файла: /usr/local/Cellar/python/3.7.4/bin/pip3
.
brew info python
help рекомендует использовать неверсированные символические ссылки в /usr/local/opt/python/libexec/bin
: /usr/local/opt/python/libexec/bin/pip
- это символическая ссылка на /usr/local/Cellar/python/3.7.4/bin/pip3
.
pip install --upgrade pip
создает новый файл /usr/local/bin/pip
вместо обновления цели символической ссылки, то есть /usr/local/Cellar/python/3.7.4/bin/pip3
. Причем этот последний файл не обновляется.
Поскольку PATH находит /usr/local/opt/python/libexec/bin/pip
перед /usr/local/bin/pip
, все терпит неудачу ...
Ожидаемое поведение
При обновлении pip
, /usr/local/bin/pip
должна быть символической ссылкой на /usr/local/opt/python/libexec/bin/pip
.
Как размножаться
pip
find -E /usr/local/ -type f -iregex '.*/pip[23]?' -print -delete
Переустановите python
с помощью Homebrew
brew reinstall python
Проверьте статус / usr / local / bin / pip * и т. Д. И найдите похожие i-узлы.
NB: Обратите внимание, что нет /usr/local/bin/pip
.
ls -li /usr/local/bin/pip*
ls -li /usr/local/opt/python/libexec/bin/pip
ls -li /usr/local/opt/python/libexec/bin/../../bin/pip3
ls -li /usr/local/bin/../Cellar/python/3.7.4/bin/pip3
Обновите pip
с помощью pip
/usr/local/opt/python/libexec/bin/pip install --upgrade pip
Повторите шаг 3 выше.
Проверять
/usr/local/bin/pip --version
Проверять
/usr/local/opt/python/libexec/bin/pip --version
Вывод
pommeau:~ bouge$ find -E /usr/local/ -type f -iregex '.*/pip[23]?' -print -delete
/usr/local//bin/pip3
/usr/local//bin/pip
find: /usr/local//etc/FileWaveInstallers/FlatPackage-Microsoft_Office_2019_VL_Serializer.pkg: Permission denied
find: /usr/local//etc/FileWaveInstallers/FlatPackage-Microsoft_AutoUpdate_4.3.18090901_Updater.pkg: Permission denied
find: /usr/local//etc/FileWaveInstallers/FlatPackage-Microsoft_Office_16.17.18090901_Installer.pkg: Permission denied
/usr/local//Cellar/python/3.7.4/bin/pip3
pommeau:~ bouge$ brew reinstall python
==> Reinstalling python
==> Downloading https://homebrew.bintray.com/bottles/python-3.7.4.mojave.bottle.
Already downloaded: /Users/bouge/Library/Caches/Homebrew/downloads/ffcfe300e2ad205387a2bdd27185d98d64621578d26d2f6ccbbcd091ff799fc8--python-3.7.4.mojave.bottle.tar.gz
==> Pouring python-3.7.4.mojave.bottle.tar.gz
==> /usr/local/Cellar/python/3.7.4/bin/python3 -s setup.py --no-user-cfg install
==> /usr/local/Cellar/python/3.7.4/bin/python3 -s setup.py --no-user-cfg install
==> /usr/local/Cellar/python/3.7.4/bin/python3 -s setup.py --no-user-cfg install
==> Caveats
Python has been installed as
/usr/local/bin/python3
Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
If you need Homebrew's Python 2.7 run
brew install python<strong i="24">@2</strong>
You can install Python packages with
pip3 install <package>
They will install into the site-package directory
/usr/local/lib/python3.7/site-packages
See: https://docs.brew.sh/Homebrew-and-Python
==> Summary
🍺 /usr/local/Cellar/python/3.7.4: 3,869 files, 60MB
pommeau:~ bouge$ ls -li /usr/local/bin/pip*
17870036 lrwxr-xr-x 1 bouge wheel 34B 4 mar 14:11 /usr/local/bin/pip2@ -> ../Cellar/python@2/2.7.16/bin/pip2
17870037 lrwxr-xr-x 1 bouge wheel 36B 4 mar 14:11 /usr/local/bin/pip2.7@ -> ../Cellar/python@2/2.7.16/bin/pip2.7
36689213 lrwxr-xr-x 1 bouge wheel 31B 24 jul 15:54 /usr/local/bin/pip3@ -> ../Cellar/python/3.7.4/bin/pip3
36689214 lrwxr-xr-x 1 bouge wheel 33B 24 jul 15:54 /usr/local/bin/pip3.7@ -> ../Cellar/python/3.7.4/bin/pip3.7
12675428 -rwxr-xr-x@ 1 bouge wheel 263B 16 jan 2019 /usr/local/bin/pip_upgrade_outdated*
pommeau:~ bouge$ ls -li /usr/local/opt/python/libexec/bin/pip
36689211 lrwxr-xr-x 1 bouge staff 14B 24 jul 15:54 /usr/local/opt/python/libexec/bin/pip@ -> ../../bin/pip3
pommeau:~ bouge$ ls -li /usr/local/opt/python/libexec/bin/../../bin/pip3
36689157 -rwxr-xr-x 1 bouge staff 386B 24 jul 15:54 /usr/local/opt/python/libexec/bin/../../bin/pip3*
pommeau:~ bouge$ ls -li /usr/local/bin/../Cellar/python/3.7.4/bin/pip3
36689157 -rwxr-xr-x 1 bouge staff 386B 24 jul 15:54 /usr/local/bin/../Cellar/python/3.7.4/bin/pip3*
pommeau:~ bouge$ /usr/local/opt/python/libexec/bin/pip install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/62/ca/94d32a6516ed197a491d17d46595ce58a83cbb2fca280414e57cd86b84dc/pip-19.2.1-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 19.1.1
Uninstalling pip-19.1.1:
Successfully uninstalled pip-19.1.1
Successfully installed pip-19.2.1
pommeau:~ bouge$ ls -li /usr/local/bin/pip*
36690799 -rwxr-xr-x 1 bouge wheel 234B 24 jul 15:55 /usr/local/bin/pip*
17870036 lrwxr-xr-x 1 bouge wheel 34B 4 mar 14:11 /usr/local/bin/pip2@ -> ../Cellar/python@2/2.7.16/bin/pip2
17870037 lrwxr-xr-x 1 bouge wheel 36B 4 mar 14:11 /usr/local/bin/pip2.7@ -> ../Cellar/python@2/2.7.16/bin/pip2.7
36690800 -rwxr-xr-x 1 bouge wheel 234B 24 jul 15:55 /usr/local/bin/pip3*
36690801 -rwxr-xr-x 1 bouge wheel 234B 24 jul 15:55 /usr/local/bin/pip3.7*
12675428 -rwxr-xr-x@ 1 bouge wheel 263B 16 jan 2019 /usr/local/bin/pip_upgrade_outdated*
pommeau:~ bouge$ ls -li /usr/local/opt/python/libexec/bin/pip
36689211 lrwxr-xr-x 1 bouge staff 14B 24 jul 15:54 /usr/local/opt/python/libexec/bin/pip@ -> ../../bin/pip3
pommeau:~ bouge$ ls -li /usr/local/opt/python/libexec/bin/../../bin/pip3
36689157 -rwxr-xr-x 1 bouge staff 386B 24 jul 15:54 /usr/local/opt/python/libexec/bin/../../bin/pip3*
pommeau:~ bouge$ ls -li /usr/local/bin/../Cellar/python/3.7.4/bin/pip3
36689157 -rwxr-xr-x 1 bouge staff 386B 24 jul 15:54 /usr/local/bin/../Cellar/python/3.7.4/bin/pip3*
pommeau:~ bouge$ /usr/local/bin/pip --version
pip 19.2.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
pommeau:~ bouge$ /usr/local/opt/python/libexec/bin/pip --version
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 583, in _build_master
ws.require(__requires__)
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (pip 19.2.1 (/usr/local/lib/python3.7/site-packages), Requirement.parse('pip==19.1.1'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/opt/python/libexec/bin/pip", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3241, in <module>
<strong i="25">@_call_aside</strong>
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3225, in _call_aside
f(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3254, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 585, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 598, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==19.1.1' distribution was not found and is required by the application
Не могли бы вы сообщить о проблеме с Homebrew со ссылкой на этот?
Я думаю, что они лучше справятся с этой проблемой, чем сопровождающие pip. Мы будем рады работать с ними, чтобы решить эту проблему, если, по их мнению, что-то, что, по их мнению, должен делать апстрим-пип.
Я всегда чувствовал, что Homebrew должен патчить pip, поэтому в сообщении рекомендуется brew upgrade pip
вместо (встроенной) команды pip install
. Я считаю, что Debian уже делает это (не уверен в RPM).
pip может упростить это, например, сделав командную строку глобальной переменной (вместо встроенной в _internal.utils.outdated
), но сначала Homebrew должен быть готов принять патч.
Следующие шаги устранили мою проблему. Поделитесь, если кому-то это понадобится:
cp /usr/local/opt/python/libexec/bin/pip /usr/local/opt/python/libexec/bin/pip_ORIG
mv /usr/local/bin/pip /usr/local/opt/python/libexec/bin/pip
ln -s /usr/local/opt/python/libexec/bin/pip /usr/local/bin/pip
pip --version
Кредит на этот пост.
Пожалуйста, рассмотрите возможность подачи проблемы в Homebrew
Самодеятельная работа ...
https://github.com/Homebrew/homebrew-core/issues/43867
Фиксированный ниже по течению.
Самый полезный комментарий
Следующие шаги устранили мою проблему. Поделитесь, если кому-то это понадобится:
Кредит на этот пост.