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

E сть --user опция для pip, которая может установить пакет 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]

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

5 ответов

Решение

Протестировав это с помощью 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 есть несколько старый необработанный запрос на извлечение, который реализует pip uninstall --target.)

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

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

pip uninstall oauth2client

Однако будьте осторожны, если вы используете pip install --user some_pkg внутри виртуальной среды.

$ path/to/python -m venv ~/my_py_venv
$ source ~/my_py_venv/bin/activate
(my_py_venv) $ pip install --user some_pkg
(my_py_venv) $ pip uninstall some_pkg
WARNING: Skipping some_pkg as it is not installed.
(my_py_venv) $ pip list
# Even `pip list` will not properly list the `some_pkg` in this case

В этом случае вам необходимо деактивировать текущую виртуальную среду, а затем использовать соответствующийpython/pip исполняемый файл для вывода списка или удаления пакетов сайта пользователя:

(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg

Обратите внимание, что об этой проблеме было сообщено несколько лет назад. И похоже, что текущий вывод таков:--user недействителен внутри виртуального окружения pip, поскольку местоположение пользователя не имеет смысла для виртуальной среды.

Я думаю, что можно удалить пакеты, установленные с помощью --userфлаг. Этот сработал для меня;

pip freeze --user | xargs pip uninstall -y

Для Python 3;

pip3 freeze --user | xargs pip3 uninstall -y

Но почему-то эти команды не удаляют setuptools и pip. После этих команд (если вы действительно хотите чистый питон) вы можете удалить их:

pip uninstall setuptools && pip uninstall pip

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

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

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

antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

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

Я использую 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
>>>

за работой!

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

1. First, install pip-purge.

  pip install pip-purge

2. Then, Run

    pip-purge

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

Другие вопросы по тегам