python - Come disinstallare un pacchetto installato con pip install--user




pip uninstall package (5)

Esiste un'opzione --user per pip che può installare un pacchetto Python per utente:

pip install --user [python-package-name]

Ho usato questa opzione per installare un pacchetto su un server per il quale non ho accesso root. Ciò di cui ho bisogno ora è disinstallare il pacchetto installato sull'utente corrente. Ho provato ad eseguire questo comando:

pip uninstall --user [python-package-name]

Ma ho ottenuto:

no such option: --user

Come posso disinstallare un pacchetto che ho installato con pip install --user , oltre a trovare ed eliminare manualmente il pacchetto?

Ho trovato questo articolo

pip non può essere disinstallato dalla directory dei pacchetti del sito per utente

che descrive che la disinstallazione dei pacchetti dalla directory utente non è supportata. Secondo l'articolo se è stato implementato correttamente quindi con

pip uninstall [package-name]

il pacchetto installato verrà anche cercato nelle directory degli utenti. Ma un problema rimane ancora per me. E se lo stesso pacchetto fosse installato sia a livello di sistema che per utente? Cosa succede se qualcuno deve scegliere come target una directory utente specifica?


Come ha menzionato @ thomas-lotze, attualmente gli strumenti pip non lo fanno in quanto non esiste un'opzione --user corrispondente. Ma quello che trovo è che posso controllare ~ / .local / bin e cercare lo specifico pip #. # Che mi sembra corrisponda all'opzione --user.

Nel mio caso:

[email protected]: ~/.l/bin$ pwd
/home/antho/.local/bin
[email protected]: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

E poi basta disinstallare con la versione pip specifica.


Dopo averlo verificato usando Python 3.5 e pip 7.1.2 su Linux, la situazione sembra essere questa:

  • pip install --user somepackage installa in $HOME/.local e la sua disinstallazione funziona usando pip uninstall somepackage .

  • Ciò è vero indipendentemente dal fatto che alcuni somepackage siano installati contemporaneamente in tutto il sistema.

  • Se il pacchetto è installato in entrambi i punti, verrà disinstallato solo quello locale. Per disinstallare il pacchetto a livello di sistema tramite pip , disinstallarlo prima in locale, quindi eseguire nuovamente lo stesso comando di disinstallazione, con root privilegi di root .

  • Oltre alla directory di installazione utente predefinita, pip install --target somedir somepackage installerà il pacchetto in somedir . Non è possibile disinstallare un pacchetto da tale posizione utilizzando pip . (Ma su Github esiste una richiesta pull non combinata in qualche modo vecchia che implementa pip uninstall --target .)

  • Poiché le uniche posizioni da cui pip verrà mai disinstallato sono il sistema e l'utente locale predefinito, è necessario eseguire la pip uninstall come rispettivo utente per disinstallare dalla directory di installazione locale di un determinato utente.


Puoi disinstallare tutti i pacchetti contemporaneamente.

1. First, install pip-purge.

  pip install pip-purge

2. Then, Run

    pip-purge

Assicurati di eseguire solo in virtualenv


Sto eseguendo Anaconda versione 4.3.22 e un ambiente python3.6.1 e ho avuto questo problema. Ecco la storia e la correzione:

pip uninstall opencv-python # -- the original step. failed.

ImportError: DLL load failed: The specified module could not be found.

L'ho fatto nel mio ambiente python3.6 e ho riscontrato questo errore.

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.

Successivamente, ho provato a scaricare python3.6 e a inserire python3.dll nella cartella e in varie cartelle. niente è cambiato.

infine, questo risolto:

pip uninstall opencv-python

(l'altra versione di conda-forge è ancora installata) Questo ha lasciato solo la versione di conda e funziona in 3.6.

>>>import cv2
>>>

lavoro!


pip install --user some_pkg attenzione, però, per coloro che usano pip install --user some_pkg all'interno di un ambiente virtuale .

$ 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 questo caso, è necessario disattivare l'ambiente virtuale corrente , quindi utilizzare l'eseguibile python / pip corrispondente per elencare o disinstallare i pacchetti del sito utente:

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

Si noti che questo problema è stato segnalato alcuni anni fa . E sembra che la conclusione attuale sia: --user non è valido all'interno di un pip di env virtuale, poiché la posizione di un utente non ha davvero senso per un ambiente virtuale.





virtualenv