Je suis nouveau sur Ubuntu, alors je vous en prie, supportez-moi. Je l' ai installé en pip
utilisant cette commande: sudo apt-get -y install python-pip
. Ensuite , j'ai installé NLTK en utilisant la commande sur leur site web, ce qui était la suivante : sudo pip install -U nltk
. Mais ensuite je suis tombé sur cette question qui dit que tout ce que j'ai fait était une "pratique rompue". La ligne qui m'a le plus frappé est que l'utilisation sudo pip
est fondamentalement fausse et que donner pip
trop de force pourrait endommager les fichiers du système d'exploitation. Quelqu'un peut-il valider cette affirmation?
Note - J'ai seulement utilisé sudo
parce que quand j'ai essayé la commande, apt-get -y install python-pip
ça m'a donné 2 erreurs:
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
package-management
permissions
python
pip
quoi quoi quoi
la source
la source
sudo pip install
sont fondamentalement fausses. - de stackoverflow.com/a/33004920/95735sudo pip install
c'est aussi mauvais que descurl "some-url" | sudo bash
installations. De même, nous avons eu à quelques reprises des développeurssudo pip install
qui installaient des dépendances sur leur poste de travail, puis enregistraient un code erroné dans le référentiel car le fichierrequirements.txt
ousetup.py
manquait ce qu'ils avaient installé, et tout le monde devait déterminer la dépendance nécessaire. pendant que le gars était en vacances.Réponses:
Les deux
sudo pip install
variantes, ainsi que leur autre variante commune, nesudo -H pip install
doivent pas être encouragées, car l’utilisation des privilèges rootpip
pour installer les packages Python à partir de PyPI (Index de package Python) constitue un risque pour la sécurité .De https://stackoverflow.com/a/21056000/486919 (emphase sur moi):
Comme indiqué à l' adresse https://security.stackexchange.com/a/79327/8761 , il est important de noter que tout le monde peut télécharger des packages Python, y compris malveillants, vers PyPI.
En bref, conformément au principe des moindres privilèges , n'utilisez pas
sudo
avecpip
pour installer les packages Python à partir de PyPI sauf si vous en avez la nécessité absolue. Pensez plutôt à utiliserpip install --user
(notez que,pip install
avec Ubuntu actuellement, aucunsudo
indicateur / option supplémentaire ni par défautpip install --user
) ou des environnements virtuels (tels quevirtualenv
). Si vous voyez des gens recommandersudo pip
ousudo -H pip
, veuillez leur dire de ne pas le faire.la source
sudo pip install
peut désinstaller les "anciens" packages Python installés sur le système, ce qui peut compliquer la mise à niveau ou la désinstallation de ces packages.sudo pip uninstall
n'aide pas ici, car il supprime le nouveau paquet mais ne restaure pas les fichiers de l'ancien. (Mon collègue R. Zagar va plus en détail dans une autre réponse.)Vous devez utiliser
sudo
pour installer pip avec apt (sudo apt install python-pip
), mais comme indiqué dans la réponse de edwinksl, vous ne devriez pas utilisersudo
pour installer des paquets avec pip , vous devez utiliserpip install --user <package>
pour installer uniquement pour votre utilisateur, ou utiliser virtualenv pour limiter encore plus la portée du paquet. .Apt installe les paquets à partir des dépôts d'Ubuntu, tandis que pip installe les paquets téléchargés par l'utilisateur à partir de PyPi, qui pourraient être malveillants.
la source
Et pour une réponse plus tempérée:
sudo apt-get install ...
, c’est exactement comme cela que l’outil a été conçu.sudo [-H]
avecpip install
est à la fois possible et facultatif, en fonction de ce que vous voulez faire exactement (et donc de "controverse").Une des devises de Python est "Il devrait y avoir un - et de préférence un seul moyen - évident de le faire." Et comme la plupart des slogans, elle semble rompre avec une joie sardonique à chaque occasion. (C’est pourquoi les devises existent, je suppose.) Malheureusement, à mon humble avis, l’écosystème Python est constitué de nombreuses règles contradictoires "hard & fast", qui ne doivent jamais être enfreintes ... sauf pour "yada yada yada" (diable, détails, etc.). Dans presque tous les cas, cela est dû à l'évolution historique de la langue et des outils (et aux personnes qui veulent / ont besoin d'une leçon d'histoire lorsqu'elles veulent juste continuer leur travail) - mais cela peut aussi être dû aux différences entre Mac / Win / * Les plates-formes Nix (par exemple, Unix / Linux a une mentalité similaire,prenez toutes ces "pratiques brisées" et "fondamentalement fausses" pour les spécialistes de la cargaison avec une énorme pincée de sel. Certains veulent vraiment bien dire. (Les autres ne sont que méchants.)
Tout d'abord, plutôt que des "installations par utilisateur" de base, vous préférerez presque toujours une virtualenv, car en réalité, c'est probablement ce dont vous aurez besoin. Donc, vous pourriez aussi bien commencer par cela maintenant. Comment cela est fait, exactement "dépend" (voir la devise Python, ci-dessus). Si vous utilisez Conda (principalement pour Mac et Windows), il sera configuré à l' aide de Conda . Si vous utilisez "pur" Python [sic] , cela dépend de la version et des utilitaires python que vous avez, mais virtualenvwrapper est très pratique.
Deuxièmement, juste comme un exemple de la règle "Never Sudo", vous préférerez peut-être
sudo -H pip install -U numpy
, ce qui est parfaitement correct, voire avantageux, en ce sens que cela peut permettre d’éviter le téléchargement / la réinstallation / la maintenance de grandes bibliothèques, où vous ne voulez / besoin d'une version, dans chaque virtualenv séparément. De grands frameworks populaires tels que scikit-learn, NumPy, matplotlib, SciPy, pandas, etc., peuvent être installés une fois pour toutes et réutilisés dans plusieurs environnements . De plus, votre administrateur système local sympathique pourrait peut-être les installer pour tous les utilisateurs d’un système - et ils le feraient bien évidemmentsudo
aussi, par exemple pour des installations plus complexes, telles que TensorFlow.Enfin, si vous installez une bibliothèque aléatoire tierce qui fait telle ou telle chose (API Twitter, conversion de texte, formatage de code, etc.), je suis tout à fait d’accord - ne l’installez pas en tant que root via Sudo. Bien sûr, installez-le en tant qu'utilisateur actuel. Mais rappelez-vous que votre compte utilisateur contient toutes vos informations essentielles .
la source
malloc
. Le--user
drapeau fait ce que le PO demandait et ne nécessite aucune autorisation spéciale. Vous remettez en cause vos points positifs sur la virtualité dans le processus… rien d’autre que «le sectariste du fret».L'utilisation de "sudo pip install" peut écraser le contenu python fourni par votre fournisseur de système d'exploitation. Lorsque cela se produit, les packages des fournisseurs concernés ne passeront pas un "rpm --verify" et vos packages apparaîtront corrompus.
Souhaitez-vous utiliser les outils d'administration système testés par votre fournisseur de système d'exploitation ou convient-il d'utiliser des composants non testés que vous avez téléchargés depuis Internet?
Quand, et pas si, un paquet malveillant est téléchargé sur PyPI ... les personnes qui utilisent "sudo pip install" finiront par exécuter cette charge malveillante avec des privilèges système complets. Veux-tu çà? (#principleofleastprivilege)
S'il ne s'agit que de votre ordinateur portable et que vous ne risquez que quelques photos de chat, le risque est probablement faible ... mais s'il s'agit d'un système multi-utilisateur, le risque est maintenant multiplié par N. Si vous disposez de données de système ayant de la valeur, ou la disponibilité ou la fiabilité du système ayant de la valeur, les risques augmentent également.
N'hésitez pas à choisir votre propre aventure, mais veuillez vous procurer le consentement éclairé des autres utilisateurs susceptibles d'être affectés par votre choix. Ils peuvent ne pas être à l'aise avec le même niveau de risque que vous.
la source
Pour ajouter à ces réponses: je ne connais pas Ubuntu, mais sur Fedora, je peux utiliser le
sudo dnf install python3-numpy
format pour installer BEAUCOUP paquets utiles pour moi. Cela n'a pas l'inconvénient d'être peu sûr (le responsable de distro repo a validé des paquets), mais vous permet également de l'installer à l'échelle du système. Le seul inconvénient est que les versions de distro repo peuvent être légèrement en retard sur les paquets dans PyPI.la source
Non, c'est correct Je ne peux pas valider cette demande. Je l'utilise toujours
sudo -H
avecpip
.pip
peut uniquement endommager les fichiers du système d’exploitationapt
. Seulement, ne pas utilisersudo
avecpip
lorsque vous voulez installer uniquement pour cet utilisateur.la source
pip
système sur votre ordinateur personnel ? Si vous êtes administrateur système, c'est peut-être une autre histoire.