Senza ambienti virtuali
pip <command> --user
modifica l'ambito del comando pip corrente in modo che funzioni sulla posizione di installazione del pacchetto python locale dell'account utente corrente, anziché sulla posizione di installazione del pacchetto a livello di sistema, che è l'impostazione predefinita.
Questo conta davvero solo su una macchina multiutente. Qualsiasi cosa installata nella posizione del sistema sarà visibile a tutti gli utenti, quindi l'installazione nella posizione dell'utente manterrà l'installazione del pacchetto separata dagli altri utenti (non la vedranno e dovranno installarla separatamente per usarla). Poiché possono esserci conflitti di versione, l'installazione di un pacchetto con dipendenze richieste da altri pacchetti può causare problemi, quindi è meglio non inviare tutti i pacchetti che un determinato utente utilizza nel percorso di installazione del sistema.
- Se si tratta di una macchina per utente singolo, l'installazione non può essere diversa o inesistente
--user
. Verrà installato in una cartella diversa, che potrebbe essere necessario o meno aggiungere al percorso, in base al pacchetto e al modo in cui viene utilizzato (molti pacchetti installano strumenti da riga di comando che devono trovarsi sul percorso per essere eseguiti da una shell) .
- Se si tratta di una macchina multiutente,
--user
si preferisce utilizzare root / sudo o richiedere l'installazione dell'amministratore e influire sull'ambiente Python di ogni utente, tranne nei casi di pacchetti generali che l'amministratore desidera rendere disponibili a tutti gli utenti per impostazione predefinita.
- Nota: per commenti, sulla maggior parte delle installazioni Unix / Linux è stato sottolineato che le installazioni di sistema dovrebbero usare il gestore pacchetti generale, come
apt
, anziché pip
.
Con ambienti virtuali
L' --user
opzione in un ambiente venv / virtualenv attivo verrà installata nella posizione python dell'utente locale (come se non fosse presente un ambiente virtuale).
I pacchetti sono installati nell'ambiente virtuale per impostazione predefinita, ma se lo usi --user
lo costringerà a installarsi al di fuori degli ambienti virtuali, nella directory degli script python degli utenti (in Windows, questo è attualmente c:\users\<username>\appdata\roaming\python\python37\scripts
per me con Python 3.7).
Tuttavia, non sarai in grado di accedere a un sistema o a un'installazione utente dall'interno di un ambiente virtuale (anche se lo hai utilizzato --user
in un ambiente virtuale).
Se installi un ambiente virtuale con l' --system-site-packages
argomento, avrai accesso alla cartella degli script di sistema per Python. Credo che questo includesse anche la cartella degli script utente Python, ma non sono sicuro. Tuttavia, potrebbero esserci conseguenze indesiderate per questo e non è il modo previsto di utilizzare ambienti virtuali.
Posizione del sistema Python e delle cartelle di installazione dell'utente locale
Puoi trovare la posizione della cartella di installazione dell'utente per Python con python -m site --user-base
. Sto trovando informazioni contrastanti nelle domande e risposte, nella documentazione e in realtà sto usando questo comando sul mio PC per sapere quali sono le impostazioni predefinite, ma si trovano sotto la home directory dell'utente ( ~
collegamento in * nix e in c:\users\<username>
genere per Windows).
Altri dettagli
L' --user
opzione non è valida per ogni comando. Ad esempio pip uninstall
, troveranno e disinstalleranno i pacchetti ovunque siano stati installati (nella cartella dell'utente, nella cartella dell'ambiente virtuale, ecc.) E l' --user
opzione non è valida.
Le cose installate con pip install --user
verranno installate in una posizione locale che verrà visualizzata solo dall'account utente corrente e non richiederà l'accesso root (su * nix) o l'accesso dell'amministratore (su Windows).
L' --user
opzione modifica tutti i pip
comandi che lo accettano per vedere / operare sulla cartella di installazione dell'utente, quindi se lo usi pip list --user
ti mostrerà solo i pacchetti installati pip install --user
.
import site; print site.USER_SITE
stampare il percorso di installazione. Per me ho/${HOME}/.local/lib/python${PY_MAJOR}.${PY_MINOR}/site-packages
.