Ошибка pip «По умолчанию используется пользовательская установка, поскольку обычные пакеты сайта недоступны для записи» Python

Программы на Python
Ответить
Anonymous
 Ошибка pip «По умолчанию используется пользовательская установка, поскольку обычные пакеты сайта недоступны для записи»

Сообщение Anonymous »

Это описание проблемы, которая меня немного расстроила. Включено

Код: Выделить всё

pip install ipython
Я получил ошибку «По умолчанию используется пользовательская установка, поскольку обычные пакеты сайта не доступны для записи».
Ошибка предполагает, что у пользователя нет доступа к каталогу «site-packages».
Поэтому он устанавливает пакет в мой пользовательский каталог вместо глобального каталога и предлагает добавить путь к /Users/... в переменную среды PATH. Не оптимальное решение — я хочу, чтобы мои пакеты находились там, где находится мой Python. Также не хотелось бы помещать его в venv, поскольку Ipython — это оболочка, используемая для нескольких проектов.
Процесс исправления заключался в следующем:
Найти некоторую информацию в среде.

Код: Выделить всё

karsten@Karstens-MacBook-Pro ~ % python -m site
sys.path = [
'/Users/karsten',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python314.zip',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14/lib-dynload',
'/Users/karsten/Library/Python/3.14/lib/python/site-packages',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14/site-packages',
]
USER_BASE: '/Users/karsten/Library/Python/3.14' (exists)
USER_SITE: '/Users/karsten/Library/Python/3.14/lib/python/site-packages' (exists)
ENABLE_USER_SITE: True
Хорошо, поэтому он должен найти Python в '/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14',
Затем найдите каталог пакетов вашего сайта.

Код: Выделить всё

% python3 -c "import site; print(site.getsitepackages())"

['/opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14/site-packages']
Таким образом, каталог site-packages по умолчанию находится в той же области, хорошо! (если вы получите сообщение «fg: no current job», откройте новый, свежий терминал и повторите).
Затем проверьте, кому принадлежит каталог site-packages

Код: Выделить всё

% ls -ld /opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14/site-packages

drwxr-xr-x   41 root  wheel    1312 Mar 31 18:38 site-packages
Итак, root владеет каталогом - это моя вина...
Теперь возьмите на себя ответственность за каталог вместе с вашим пользователем (и/или группой). На самом деле, почему бы не взять на себя ответственность на несколько уровней выше, чтобы избежать других ошибок в будущем:

Код: Выделить всё

% sudo chown -R karsten:staff /opt/local/Library/Frameworks/Python.framework

Теперь право собственности должно перейти на меня. Подтвердите, что он принадлежит мне

Код: Выделить всё

% ls -ld /opt/local/Library/Frameworks/Python.framework/Versions/3.14/lib/python3.14/site-packages

drwxr-xr-x   41 karsten  staff    1312 Mar 31 18:38 site-packages

Итак, теперь ошибка исчезла, и пакеты помещаются в нужное место в /opt.
Я также выполнил удаление с помощью pip, а затем установил несколько пакетов, которые были установлены при использовании root - просто для удобства.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»