Почему модуль ensurepip не работает для моей домашней установки python 3.9?

#python-3.x #pip

Вопрос:

Я установил python 3.9 через homebrew в своей системе macOS Big Sur. Чтобы заставить pip3 работать, я попытался использовать модуль ensurepip:

 python3 -m ensurepip
 

Который затем преуспевает (по-видимому):

 Successfully installed pip-21.2.4 setuptools-57.4.0
 

Но, когда я пытаюсь запустить pip3, он не может найти модуль pip:

 $ python3 -m pip
/usr/local/opt/python@3.9/bin/python3.9: No module named pip
 

Я вижу, что модуль pip действительно был установлен в этом каталоге:

 /usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip
 

Но, когда я запускаю python3, я вижу это:

 >>> import sys
>>> sys.path
['', '/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages']
 

Итак, почему вы python3 -m ensurepip решили установить модуль pip в каталог, в котором он на самом деле не ищет модули? И что еще более важно, как мне это исправить?

Ответ №1:

Я все понял. Установка homebrew для python3 не была завершена должным образом из-за печально /usr/local известной проблемы с разрешениями в macOS. Таким образом, шаг после установки не был запущен для python3, который настраивает pip3 и т. Д. Из-за этого модуль ensurepip установил pip в каталог, которого не было в пути поиска модуля python3.

Итак, я исправил проблемы с владением /usr/local для homebrew (хотя я не уверен, почему это все еще не работает должным образом из коробки).

Затем, когда я вернулся, чтобы запустить postinstall, он потерпел неудачу, ничего мне не сказав. Итак, я использовал эту --debug опцию и увидел, что она была сердита, потому что каталог пакетов сайтов не был пуст (из-за моей предыдущей установки pip с использованием securepip). Итак, я стер этот каталог rm -rf и повторно запустил установку после установки. А потом это сработало.