De pip install --help
:
--user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
Windows. (See the Python documentation for site.USER_BASE for full details.)
La documentation de site.USER_BASE est un trou de ver terrifiant de sujets NIX intéressants que je ne comprends pas.
Quel est le but de --user
en clair? Pourquoi installer le paquet dans ~/.local/
importerait-il? Pourquoi ne pas simplement mettre un exécutable quelque part dans mon $ PATH?
pip installe par défaut les packages Python dans un répertoire système (tel que /usr/local/lib/python3.4
). Cela nécessite un accès root.
--user
permet à la place d'installer des paquetages dans votre répertoire personnel, ce qui ne nécessite aucun privilège spécial.
_--user
_ installe dans site.USER_SITE
.
Pour mon cas, c'était _/Users/.../Library/Python/2.7/bin
_. J'ai donc ajouté cela à mon PATH (dans le fichier _~/.bash_profile
_):
_export PATH=$PATH:/Users/.../Library/Python/2.7/bin
_
D'autres réponses mentionnent site.USER_SITE
comme où Python paquets sont placés. Si vous recherchez des fichiers binaires, ceux-ci vont dans {site.USER_BASE}/bin
.
Si vous souhaitez ajouter ce répertoire au chemin de recherche de votre shell, utilisez:
export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"
Sur un système d'exploitation MAC, l'indicateur --user
est utilisé pour s'assurer que nous ne corrompons pas les bibliothèques sur lesquelles le système d'exploitation repose. Une approche conservative prudente pour de nombreux utilisateurs de MAC OS consiste à éviter d'installer ou de mettre à jour pip avec une commande nécessitant Sudo
. Cela inclut donc l’installation sur /usr/local/bin
...
Réf.: Installation de python pour Neovim ( https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim )
Je ne suis pas tout au juste pourquoi installer dans /usr/local/bin
est un risque sur un MAC, étant donné que le système ne s'appuie que sur python binaires dans /Library/Frameworks/
et /usr/bin
. Je suppose que c'est parce que, comme indiqué ci-dessus, l'installation dans /usr/local/bin
nécessite Sudo
, ce qui ouvre la porte à une erreur coûteuse avec les bibliothèques système. Ainsi, installer dans ~/.local/bin
est un moyen sûr d’éviter ce risque.
Réf.: Utilisation de python sur un Mac ( https://docs.python.org/2/using/mac.html )
Enfin, dans la mesure où il est avantageux d'installer des packages dans le /usr/local/bin
, je me demande s'il est logique de changer le propriétaire du répertoire de root
à user
? Ceci éviterait de devoir utiliser Sudo
tout en vous protégeant contre les modifications dépendantes du système. * S'agit-il d'un défaut de sécurité? les systèmes étaient plus souvent utilisés dans le passé (comme serveurs)? Ou au moins, juste un bon moyen d’aller pour les utilisateurs de MAC n’hébergeant pas de serveur?
* Remarque: la fonction SIP (System Integrity Protection) de Mac semble également protéger l'utilisateur des modifications apportées aux bibliothèques dépendant du système.
- E
Le meilleur moyen d’installer virtualenv
ne nécessite pas la confusion --user
. Vous obtiendrez plus de flexibilité et ne craindrez plus les différentes versions et projets python à chaque fois que vous installez un paquet.
Juste un avertissement:
Selon ce problème , --user
n'est actuellement pas valide dans la variable pip
d'un env virtuel, puisqu'un emplacement d'utilisateur n'a pas vraiment de sens pour un environnement virtuel.
Donc, n'utilisez pas pip install --user some_pkg
dans un environnement virtuel , sinon, le pip
de l'environnement virtuel sera confondu. Voir cette réponse pour plus de détails.