340 votes

Quel est le but "pip install --user ..."?

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 anglais simplifié? Pourquoi l’installation du paquet à ~/.local/ importante? Pourquoi ne pas simplement mettre un exécutable quelque part dans mon $ PATH?

390voto

duskwuff Points 69245

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 fait que pip installe des paquetages dans votre répertoire personnel, ce qui ne nécessite aucun privilège spécial.

39voto

Roozbeh Points 1939

--user s'installe dans site.USER_SITE .

Dans 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
 

29voto

rgov Points 66

Les autres réponses mentionnent site.USER_SITE tant que lieu où les packages Python 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"
 

15voto

user603749 Points 308

Le meilleur moyen est d’installer virtualenv et de ne pas exiger la confusion --user . Vous obtiendrez plus de flexibilité et ne craindrez pas l’abandon des différentes versions et projets Python chaque fois que vous installez un paquet.

https://virtualenv.pypa.io/fr/stable/

10voto

Edmund's Echo Points 124

Sur MAC OS, la raison de l'utilisation de l' --user drapeau est de nous assurer de ne pas endommager les bibliothèques de l'OS repose sur. Un conservateur pour de nombreux utilisateurs de MAC OS est pour éviter l'installation ou la mise à jour de pip avec une commande qui demande sudo. Ainsi, cela comprend l'installation d' /usr/local/bin...

Ref: Installation de python pour Neovim (https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim)

Je ne suis pas du tout clair sur le pourquoi de l'installation en /usr/local/bin est un risque sur un MAC, compte tenu du fait que le système ne repose que sur python binaires en /Library/Frameworks/ et /usr/bin. Je soupçonne que c'est parce que, comme mentionné ci-dessus, l'installation en /usr/local/bin exige sudo qui ouvre la porte à de faire une erreur coûteuse avec le système de bibliothèques. Ainsi, l'installation en ~/.local/bin est un sûr moyen d'éviter ce risque.

Ref: à l'Aide de python sur un Mac (https://docs.python.org/2/using/mac.html)

Enfin, dans la mesure où il y a un avantage de l'installation de paquets dans l' /usr/local/bin, je me demande si il est judicieux de changer le propriétaire du répertoire de root de user? Cela permettrait d'éviter d'avoir à utiliser des sudo tout en la protégeant contre le système dépendants des changements.* Est-ce une sécurité par défaut d'une relique de la façon dont les systèmes Unix ont été le plus souvent utilisé dans le passé (comme les serveurs)? Ou au minimum, juste de la bonne voie à suivre pour les utilisateurs de MAC ne l'hébergement d'un serveur?

*Remarque: Mac du Système de Protection de l'Intégrité (SIP) fonctionnalité semble également protéger l'utilisateur de modifier le système de bibliothèques dépendantes.

- E

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X