Er is een --user
optie voor pip die een Python-pakket per gebruiker kan installeren:
pip install --user [python-package-name]
Ik heb deze optie gebruikt om een pakket te installeren op een server waarvoor ik geen root-toegang heb. Wat ik nu nodig heb, is om het geïnstalleerde pakket op de huidige gebruiker te verwijderen. Ik heb geprobeerd dit commando uit te voeren:
pip uninstall --user [python-package-name]
Maar ik heb:
no such option: --user
Hoe kan ik een pakket verwijderen dat ik heb geïnstalleerd met pip install --user
, anders dan het handmatig zoeken en verwijderen van het pakket?
Ik heb dit artikel gevonden
pip kan niet verwijderen uit de directory site-packages per gebruiker
waarin wordt beschreven dat het verwijderen van pakketten uit de gebruikersmap niet wordt ondersteund. Volgens het artikel als het correct is geïmplementeerd, dan met
pip uninstall [package-name]
het geïnstalleerde pakket wordt ook doorzocht in gebruikersmappen. Maar er blijft voor mij nog een probleem. Wat als hetzelfde pakket zowel systeembreed als per gebruiker is geïnstalleerd?
Wat als iemand een specifieke gebruikersdirectory moet targeten?
Antwoord 1, autoriteit 100%
Na dit te hebben getest met Python 3.5 en pip 7.1.2 op Linux, lijkt de situatie als volgt te zijn:
-
pip install --user somepackage
installeert naar$HOME/.local
, en het verwijderen ervan werkt wel metpip uninstall somepackage
. -
Dit is waar, ongeacht of
somepackage
tegelijkertijd ook voor het hele systeem is geïnstalleerd. -
Als het pakket op beide plaatsen is geïnstalleerd, wordt alleen het lokale pakket verwijderd. Om het pakket voor het hele systeem te verwijderen met behulp van
pip
, verwijdert u het eerst lokaal en voert u hetzelfde de-installatiecommando opnieuw uit, metroot
-rechten. -
Naast de vooraf gedefinieerde gebruikersinstallatiemap, zal
pip install --target somedir somepackage
het pakket installeren insomedir
. Er is geen manier om een pakket van een dergelijke plaats te verwijderen met behulp vanpip
. (Maar er is een wat oud niet-samengevoegd pull-verzoek op Github datpip uninstall --target
implementeert.) -
Aangezien de enige plaatsen waar
pip
ooit verwijderd zal worden, het hele systeem en vooraf gedefinieerde gebruikers-lokaal zijn, moet jepip uninstall
uitvoeren als de respectievelijke gebruiker om verwijderen uit de lokale installatiemap van een bepaalde gebruiker.
Antwoord 2, autoriteit 11%
voorbeeld om pakket ‘oauth2client’ op MacOS te verwijderen:
pip uninstall oauth2client
Antwoord 3, autoriteit 6%
Wees echter voorzichtig, voor degenen die pip install --user some_pkg
in een virtuele omgevinggebruiken.
$ 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
In dit geval moet u de huidige virtuele omgeving deactiverenen vervolgens het bijbehorende uitvoerbare bestand python
/pip
gebruiken om de gebruikerssitepakketten:
(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg
Houd er rekening mee dat dit probleem een paar jaar geleden is gemeld. En het lijkt erop dat de huidige conclusieis: --user
is niet geldig in de pip
van een virtuele omgeving, aangezien een gebruikerslocatie niet echt logisch is voor een virtuele omgeving.
Antwoord 4, autoriteit 5%
Ik raad je ten zeerste aan om virtuele omgevingen te gebruiken voor de installatie van python-pakketten. Met virtualenv voorkom je pakketconflicten en totale isolatie van je aan Python gerelateerde userland-commando’s.
Als u al uw wereldwijd geïnstalleerde pakketten wilt verwijderen, volgt u dit;
Het is mogelijk om pakketten te verwijderen die zijn geïnstalleerd met de vlag --user
. Deze werkte voor mij;
pip freeze --user | xargs pip uninstall -y
Voor python 3;
pip3 freeze --user | xargs pip3 uninstall -y
Maar op de een of andere manier verwijderen deze commando’s setuptools en pip niet. Na die commando’s (als je echt een schone python wilt) kun je ze verwijderen met;
pip uninstall setuptools && pip uninstall pip
Nu heb je een schone Python-omgeving. U kunt virtualenv maken en het pakket erin installeren.
Antwoord 5
Het antwoord is Nog niet mogelijk. Je moet het handmatig verwijderen.
Antwoord 6
Zoals @thomas-lotze al zei, doet pip tooling dat momenteel niet omdat er geen corresponderende –user optie is. Maar wat ik vind is dat ik ~/.local/bin kan inchecken en kan zoeken naar de specifieke pip#.# die volgens mij overeenkomt met de –user optie.
In mijn geval:
antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip pip2 pip2.7 pip3 pip3.5
En verwijder dan gewoon met de specifieke pip-versie.
Antwoord 7
Ik gebruik Anaconda versie 4.3.22 en een python3.6.1-omgeving en had dit probleem. Hier is de geschiedenis en de oplossing:
pip uninstall opencv-python # -- the original step. failed.
ImportError: DLL load failed: The specified module could not be found.
Ik deed dit in mijn python3.6-omgeving en kreeg deze foutmelding.
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.
Vervolgens probeerde ik python3.6 te downloaden en de python3.dll in de map en in verschillende mappen te plaatsen. Er is niets veranderd.
eindelijk heeft dit het opgelost:
pip uninstall opencv-python
(de andere conda-forge-versie is nog steeds geïnstalleerd) Dit liet alleen de conda-versie over, en dat werkt in 3.6.
>>>import cv2
>>>
werkt!