pip install -r requirements.txt
échoue avec l'exception ci-dessous OSError: [Errno 13] Permission denied: '/usr/local/lib/...
. Quel est le problème et comment résoudre ce problème? (J'essaye de configurer Django )
Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
requirement.install(install_options, global_options, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
self.move_wheel_files(self.source_dir, root=root)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
pycompile=self.pycompile,
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
os.makedirs(destsubdir)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'
python
permissions
pip
install
RunLoop
la source
la source
Réponses:
Option a) Créez un virtualenv, activez-le et installez:
Option b) Installez dans votre domicile:
Ma recommandation utilise l'option safe (a), de sorte que les exigences de ce projet n'interfèrent pas avec les exigences d'autres projets.
la source
sudo:pip: command not found
sur mon instance aws ec2 lors de l'exécution de cette commande. Veuillez aider.sudo
conseils. même si cela fonctionne maintenant, cela va vous donner beaucoup de maux de tête à l'avenir.Nous devrions vraiment arrêter de conseiller l'utilisation de
sudo
avecpip install
. Il vaut mieux commencer par essayerpip install --user
. Si cela échoue, jetez un œil au premier article ici .La raison pour laquelle vous ne devriez pas utiliser
sudo
est la suivante:Lorsque vous exécutez pip avec
sudo
, vous exécutez du code Python arbitraire à partir d'Internet en tant qu'utilisateur root, ce qui représente un risque de sécurité assez important. Si quelqu'un met en place un projet malveillant sur PyPI et que vous l'installez, vous donnez à un attaquant un accès root à votre machine.la source
sudo x install
, pour tousx
(y comprisx = make
).--user
installe le package dans votre répertoire personnel, plutôt qu'à la racine. L'installation de quelque chose à cet emplacement ne nécessite aucun privilège supplémentaire.sudo
été supprimée il y a un an. Cette réponse est obsolète - veuillez la réviser et la mettre à jour. Vous devez également mentionner les installations et les autorisations par utilisateur par rapport à l'ensemble du système. N'utilisez pas votre réponse pour critiquer directement d'autres réponses, qui auront tendance à devenir rapidement obsolètes.Vous essayez d'installer un package sur le chemin d'accès à l'échelle du système sans avoir l'autorisation de le faire.
En général, vous pouvez utilisersudo
pour obtenir temporairement les autorisations de superutilisateur sous votre responsabilité afin d'installer le package sur le chemin d'accès à l'échelle du système:En savoir plussudo
ici .En fait, c'est une mauvaise idée et il n'y a pas de bon cas d'utilisation, voir le commentaire de @ wim.
Si vous ne souhaitez pas apporter de modifications à l'échelle du système, vous pouvez installer le package sur votre chemin par utilisateur à l'aide de l'
--user
indicateur.Tout ce qu'il faut, c'est:
Enfin, pour un contrôle encore plus fin , vous pouvez également utiliser un virtualenv , qui pourrait être la solution supérieure pour un environnement de développement, surtout si vous travaillez sur plusieurs projets et que vous souhaitez garder une trace des dépendances de chacun.
Après avoir activé votre virtualenv avec
$ my-virtualenv/bin/activate
la commande suivante installera le package dans le virtualenv (et non sur le chemin à l'échelle du système):
pip install -r requirements.txt
la source
pyenv/pipenv
devons mentionner ceux-ci, de préférence àvirtualenv
(ouconda-env
) b) sudo considérés comme nuisibles, et voir les autres réponses pourquoi. Mettez donc la réponse basée sur l'environnement en premier, et la réponse sudo en dernier, avec un gros avertissement.sudo pip install -r requirements.txt
n'a jamais raison. L'environnement python du système appartient au système, point final . Si vous installez plus de choses python dans le système, faites - le avec gestionnaire de paquets uniquement (par exemplesudo yum install
,apt-get
, etc ...) étant donné que ces prises en pension devraient avoir des versions sûres et compatibles des bibliothèques Disp.sudo make install
code, généralement compilé + lié, n'est pas vraiment analogue à unsudo pip install
car l' installation de Python env sur le système peut invalider les dépendances . Supposons qu'il y ait un service systèmepython-frobnicator
, qui a une dépendance surfroblib
(ce sera également dans le gestionnaire de packages et épinglé à une version compatible), puis voussudo pip install
une autre application ou bibliothèque qui a une dépendance sur "froblib > 1.2
". Pip se fera un plaisir de "mettre à jour" la version du systèmefroblib
avec une version plus récente, qui peut être incompatible / non testée et casser le système.Simplement clarifiant ce qui a fonctionné pour moi après beaucoup de douleur sous Linux (basé sur ubuntu) sur des erreurs de permission refusées, et en tirant parti de la réponse de Bert ci-dessus, j'utilise maintenant ...
ou si vous exécutez pip sur un fichier d'exigences ...
et ceux-ci fonctionnent de manière fiable pour chaque installation de pip, y compris la création d'environnements virtuels.
Cependant, la solution la plus propre de ma nouvelle expérience a été d'installer
python-virtualenv
etvirtualenvwrapper
avecsudo apt-get install
au niveau du système.Ensuite, dans les environnements virtuels, utilisez
pip install
sans le--user
drapeau ET sanssudo
. Beaucoup plus propre, plus sûr et plus facile dans l'ensemble.la source
pip install --user -r requirements.txt
L'utilisateur n'a pas l'autorisation d'écriture pour certains chemins d'installation Python. Vous pouvez donner l'autorisation en:
Donc, vous devez donner la permission, puis essayez de l'installer à nouveau, si vous avez de nouveaux chemins, vous devez également donner la permission:
la source
/usr
appartiendrait généralement à root, ces jours-ci. Chown récursivement là pourrait bousiller votre système. ÉVITEZ .Si vous avez besoin d'autorisations, vous ne pouvez pas utiliser «pip» avec «sudo». Vous pouvez faire une astuce pour pouvoir utiliser «sudo» et installer le package. Placez simplement «sudo python -m ...» devant votre commande pip.
la source
Donc, j'ai eu cette même erreur exacte pour une raison complètement différente. En raison d'un bug Homebrew + pip totalement distinct mais connu , j'avais suivi cette solution de contournement répertoriée dans la documentation d'aide de Google Cloud, où vous créez un fichier .pydistutils.cfg dans votre répertoire personnel. Ce fichier a une configuration spéciale que vous êtes censé utiliser uniquement pour l'installation de certaines bibliothèques. J'aurais dû supprimer ce fichier disutils.cfg après avoir installé les packages, mais j'ai oublié de le faire. Donc, la solution pour moi était en fait juste ...
rm ~/.pydistutils.cfg
.Et puis tout a fonctionné normalement. Bien sûr, si vous avez une configuration dans ce fichier pour une raison réelle, vous ne voudrez pas simplement rm directement ce fichier. Mais au cas où quelqu'un d'autre ferait cette solution de contournement et oublierait de supprimer ce fichier, cela a fait l'affaire pour moi!
la source
C'est un problème de permission,
ce serait par défaut
/usr/local/lib/python2.7/
ou essayez,
et puis dites,
pip install -r requirements.txt
cela va s'installer dans votre envne dites pas,
sudo pip install -r requirements.txt
cela va s'installer dans un chemin python arbitraire.la source