Kako odstraniti paket, nameščen s pip install --user

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?

Rešitev

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.

Komentarji (2)

primer za odstranitev paketa 'oauth2client' v sistemu MacOS:

pip uninstall oauth2client
Komentarji (0)

Odgovor je To še ni mogoče. Odstraniti ga morate ročno.

Komentarji (2)