it-swarm.com.ru

Как удалить пакет, установленный с помощью pip install --user

Для pip есть опция --user, которая может установить пакет Python для пользователя:

pip install --user [python-package-name]

Я использовал эту опцию, чтобы установить пакет на сервер, для которого у меня нет прав root. Теперь мне нужно удалить установленный пакет для текущего пользователя. Я попытался выполнить эту команду:

pip uninstall --user [python-package-name]

Но я получил:

no such option: --user

Как я могу удалить пакет, который я установил с помощью pip install --user, кроме ручного поиска и удаления пакета?

Я нашел эту статью 

pip не может быть удален из пользовательского каталога site-packages

который описывает, что удаление пакетов из каталога пользователя не поддерживается. Согласно статье, если она была реализована правильно, то с

pip uninstall [package-name]

установленный пакет будет также найден в пользовательских каталогах. Но проблема все еще остается для меня. Что, если один и тот же пакет был установлен как для всей системы, так и для каждого пользователя? Что если кому-то нужно указать целевой каталог пользователя?

138
Serjik

Протестировав это с помощью Python 3.5 и pip 7.1.2 в Linux, ситуация выглядит так:

  • pip install --user somepackage устанавливается в $HOME/.local, и его удаление работает с использованием pip uninstall somepackage.

  • Это верно независимо от того, установлен ли somepackage в масштабе всей системы одновременно.

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

  • В дополнение к предопределенному пользовательскому каталогу установки, pip install --target somedir somepackage установит пакет в somedir. Невозможно удалить пакет из такого места, используя pip. (Но на Github есть несколько старый необработанный pull-запрос, который реализует pip uninstall --target.)

  • Поскольку единственные места, из которых когда-либо удаляется pip, - это общесистемные и предварительно определенные локальные пользователи, вам нужно запустить pip uninstall от имени соответствующего пользователя, чтобы удалить его из локального каталога установки данного пользователя.

124
Thomas Lotze

пример удаления пакета «oauth2client» в MacOS:

pip uninstall oauth2client
19
Huy - Logarit

Как упомянул @ thomas-lotze, в настоящее время инструменты pip этого не делают, так как нет соответствующей опции --user. Но я обнаружил, что могу проверить в ~/.local/bin и найти конкретный пункт #. #, Который, как мне кажется, соответствует опции --user.

В моем случае:

[email protected]: ~/.l/bin$ pwd
/home/antho/.local/bin
[email protected]: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

А затем просто удалите с определенной версией пипа.

2
AnthonyC

Ответ пока невозможно . Вы должны удалить его вручную.

2
sorin

Вы можете удалить все пакеты одновременно.

1. First, install pip-purge.

  pip install pip-purge

2. Then, Run

    pip-purge

Удостоверьтесь, чтобы только бежать в virtualenv 

0
ParthS007

Я использую Anaconda версии 4.3.22 и среду python3.6.1, и у меня возникла эта проблема. Вот история и исправление:

pip uninstall opencv-python # -- the original step. failed.

ImportError: DLL load failed: The specified module could not be found.

Я сделал это в моей среде python3.6 и получил эту ошибку.

python -m pip install opencv-python # same package as above.
conda install -c conda-forge opencv # separate install parallel to opencv
pip-install opencv-contrib-python # suggested by another user here. doesn't resolve it.

Затем я попытался загрузить python3.6 и поместить python3.dll в папку и в разные папки. Ничего не изменилось. 

наконец, это исправлено: 

pip uninstall opencv-python

(другая версия conda-forge все еще установлена) Это оставило только версию conda, и это работает в 3.6. 

>>>import cv2
>>>

за работой!

0
Marc Maxmeister