Установка pip в / usr / bin вместо / usr / local / bin - PullRequest
0 голосов
/ 28 марта 2019

Итак, я пытаюсь обновить пипс. В настоящее время pip присутствует в / usr / bin, но когда я обновляю pip с помощью: «pip install --upgrade pip», он обновляет pip в / usr / local / bin, а не в / usr / bin. Есть ли способ сохранить установку pip в / usr / bin и все библиотеки pip в / usr / lib или / usr / lib64 и т. Д.?

1 Ответ

3 голосов
/ 28 марта 2019

В общем, запуск pip от имени root - никогда - хорошая идея. Вы устанавливаете в свой корень файлы, которые не отслеживаются менеджером пакетов вашего дистрибутива.

Это может звучать не так уж плохо, но в целом это так, потому что вы загромождаете свою систему файлами, которые могут конфликтовать с другими, и что вам, вероятно, будет трудно удалить.

Пип делает правильные вещи, устанавливая себя в масштабе всей системы в /usr/local. Общее соглашение заключается в том, что менеджером пакетов отслеживается содержимое вне вашего собственного каталога системных каталогов /etc, /var и local.

Менеджер пакетов будет перезаписывать файлы вне этих каталогов без запроса. local дубликаты системных каталогов, чтобы дать вам возможность устанавливать компоненты в масштабе всей системы, не беспокоясь об этом. Однако, в большинстве случаев, есть лучшие способы сделать это.

Например, лучший способ работы с Python - использовать virtualenv s. Они предоставляют вам изолированную среду, в которую вы можете активировать и устанавливать компоненты, включая актуальную версию pip.

Вы также можете запустить его как пользователь (без sudo), но вам нужно будет добавить его каталог bin в ваш $PATH.

Лучше, если вы оставите /usr/bin/pip в покое, иначе могут случиться плохие вещи.

Чтобы ответить на ваш вопрос, если вы действительно не можете жить без него в /usr/bin или в virtualenv, мне грустно говорить, что такой документированной опции для pip не существует. Однако у вас есть два варианта:

  1. Удалите пакет pip вашего дистрибутива, затем символическую ссылку /usr/bin/pip на /usr/local/bin/pip. Это будет работать, но все равно будет технически установлено в /usr/local. Кроме того, любая другая программа, которая зависит от пакета pip вашего дистрибутива, должна быть удалена.
  2. (очень плохо) Загрузите исходники pip, затем установите его с sudo python setup.py install --prefix=/usr. Это поместит его в /usr/bin, но вы должны чувствовать себя очень плохо из-за того, что сделали это.

Я действительно не могу не подчеркнуть, насколько плоха эта практика.

...