Sans environnements virtuels
pip <command> --user
modifie la portée de la commande pip actuelle pour qu'elle fonctionne sur l'emplacement d'installation du package Python local du compte d'utilisateur actuel, plutôt que sur l'emplacement d'installation du package à l'échelle du système, qui est la valeur par défaut.
Cela n'a vraiment d'importance que sur une machine multi-utilisateurs. Tout ce qui est installé à l'emplacement du système sera visible par tous les utilisateurs, donc l'installation à l'emplacement de l'utilisateur gardera l'installation de ce package séparée des autres utilisateurs (ils ne le verront pas et devront l'installer eux-mêmes pour l'utiliser). Comme il peut y avoir des conflits de version, l'installation d'un package avec les dépendances requises par d'autres packages peut poser des problèmes, il est donc préférable de ne pas pousser tous les packages qu'un utilisateur donné utilise vers l'emplacement d'installation du système.
- S'il s'agit d'une machine mono-utilisateur, il y a peu ou pas de différence d'installation sur l'
--user
emplacement. Il sera installé dans un dossier différent, qui peut ou non devoir être ajouté au chemin, en fonction du package et de la façon dont il est utilisé (de nombreux packages installent des outils de ligne de commande qui doivent être sur le chemin pour s'exécuter à partir d'un shell) .
- S'il s'agit d'une machine multi-utilisateurs, il
--user
est préférable d'utiliser root / sudo ou d'exiger une installation administrateur et d'affecter l'environnement Python de chaque utilisateur, sauf dans les cas de packages généraux que l'administrateur souhaite mettre à disposition de tous les utilisateurs par défaut.
- Remarque: Selon les commentaires, sur la plupart des installations Unix / Linux, il a été souligné que les installations système devraient utiliser le gestionnaire de paquets général, tel que
apt
, plutôt que pip
.
Avec des environnements virtuels
L' --user
option dans un environnement venv / virtualenv actif s'installera à l'emplacement python de l'utilisateur local (comme sans environnement virtuel).
Les packages sont installés dans l'environnement virtuel par défaut, mais si vous l'utilisez, --user
cela le forcera à s'installer en dehors des environnements virtuels, dans le répertoire de script python des utilisateurs (sous Windows, c'est actuellement c:\users\<username>\appdata\roaming\python\python37\scripts
pour moi avec Python 3.7).
Cependant, vous ne pourrez pas accéder à une installation système ou utilisateur à partir d'un environnement virtuel (même si vous avez utilisé --user
dans un environnement virtuel).
Si vous installez un environnement virtuel avec l' --system-site-packages
argument, vous aurez accès au dossier de script système pour python. Je pense que cela incluait également le dossier de script python de l'utilisateur, mais je ne suis pas sûr. Cependant, cela peut avoir des conséquences inattendues et ce n'est pas la manière prévue d'utiliser les environnements virtuels.
Emplacement du système Python et des dossiers d'installation de l'utilisateur local
Vous pouvez trouver l'emplacement du dossier d'installation utilisateur pour python avec python -m site --user-base
. Je trouve des informations contradictoires dans les questions et réponses, la documentation et j'utilise réellement cette commande sur mon PC pour savoir quelles sont les valeurs par défaut, mais elles se trouvent sous le répertoire personnel de l'utilisateur ( ~
raccourci dans * nix, et c:\users\<username>
généralement pour Windows).
Autres détails
L' --user
option n'est pas valide pour toutes les commandes. Par exemple, pip uninstall
il trouvera et désinstallera les packages partout où ils ont été installés (dans le dossier utilisateur, le dossier de l'environnement virtuel, etc.) et l' --user
option n'est pas valide.
Choses installées avec pip install --user
seront installés dans un emplacement local qui ne sera visible que par le compte d'utilisateur actuel et ne nécessitera pas d'accès root (sur * nix) ou d'accès administrateur (sous Windows).
L' --user
option modifie toutes les pip
commandes qui l'acceptent pour voir / fonctionner sur le dossier d'installation de l'utilisateur, donc si vous l'utilisez, pip list --user
elle ne montrera que les packages installés avec pip install --user
.
import site; print site.USER_SITE
imprimer l'emplacement d'installation. Pour moi, j'ai/${HOME}/.local/lib/python${PY_MAJOR}.${PY_MINOR}/site-packages
.