Как удалить пакет, установленный с помощью 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