Za pip je na voljo možnost --user
, s katero lahko namestite paket Python za posameznega uporabnika:
pip install --user [python-package-name]
To možnost sem uporabil za namestitev paketa v strežnik, za katerega nimam korenskega dostopa. Zdaj potrebujem odstranitev nameščenega paketa za trenutnega uporabnika. Poskusil sem izvesti ta ukaz:
pip uninstall --user [python-package-name]
Vendar sem dobil:
no such option: --user
Kako lahko odstranim paket, ki sem ga namestil s programom pip install --user
, razen z ročnim iskanjem in brisanjem paketa?
Našel sem ta članek
pip ne more odstraniti paketa iz imenika site-packages za posameznega uporabnika
ki opisuje, da odstranjevanje paketov iz uporabniškega imenika ni podprto. Glede na članek, če bi bilo to izvedeno pravilno, potem bi z
pip uninstall [package-name]
se bo paket, ki je bil nameščen, iskal tudi v uporabniških imenikih. Vendar mi še vedno ostaja težava. Kaj če je bil isti paket nameščen tako za celoten sistem kot za posameznega uporabnika? Kaj če mora nekdo ciljati na določen uporabniški imenik?
Po preizkušanju z uporabo Python 3.5 in pip 7.1.2 na Linuxu se zdi, da je situacija takšna:
pip install --user somepackage
ga namesti v $HOME/.local
, odstranitev pa deluje z uporabo pip uninstall somepackage
.
To velja ne glede na to, ali je somepackage
istočasno nameščen tudi na celoten sistem ali ne.
Če je paket nameščen na obeh mestih, bo odstranjen samo lokalni paket. Če želite paket odstraniti na celotnem sistemu z uporabo pip
, ga najprej odstranite lokalno, nato pa ponovno zaženite isti ukaz za odstranitev s privilegiji root
.
Poleg vnaprej določenega uporabniškega namestitvenega imenika bo pip install --target somedir somepackage
paket namestil tudi v somedir
. Paketa s takšnega mesta ni mogoče odstraniti z uporabo pip
. (Obstaja pa nekoliko starejša neusklajena zahteva za prenos na Github, ki izvaja pip uninstall --target
.)
Ker sta edini mesti, s katerih bo pip
odstranil paket, sistemsko in vnaprej določeno lokalno mesto uporabnika, morate pip uninstall
zagnati kot ustrezen uporabnik, da odstranite paket iz lokalnega namestitvenega imenika določenega uporabnika.