pip install -r requirements.txt
schlägt mit der folgenden Ausnahme fehl OSError: [Errno 13] Permission denied: '/usr/local/lib/...
. Was ist los und wie behebe ich das? (Ich versuche Django einzurichten )
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
quelle
quelle
Antworten:
Option a) Erstellen Sie eine virtuelle Umgebung, aktivieren Sie sie und installieren Sie:
Option b) Installieren Sie in Ihrem Homedir:
Meine Empfehlung verwendet die Option safe (a), damit die Anforderungen dieses Projekts die Anforderungen anderer Projekte nicht beeinträchtigen.
quelle
sudo:pip: command not found
Beim Ausführen dieses Befehls ist auf meiner aws ec2-Instanz ein solcher Fehler aufgetreten. Bitte helfen Sie.sudo
Beratung. Obwohl es jetzt funktioniert, wird es Ihnen in Zukunft viele Kopfschmerzen bereiten.Wir sollten wirklich aufhören, die Verwendung von
sudo
with zu empfehlenpip install
. Es ist besser, es zuerst zu versuchenpip install --user
. Wenn dies fehlschlägt, werfen Sie einen Blick auf den oberen Beitrag hier .Der Grund, den Sie nicht verwenden sollten,
sudo
ist folgender:Wenn Sie pip with ausführen
sudo
, führen Sie als Root-Benutzer beliebigen Python-Code aus dem Internet aus, was ein ziemlich großes Sicherheitsrisiko darstellt. Wenn jemand ein schädliches Projekt auf PyPI erstellt und Sie es installieren, gewähren Sie einem Angreifer Root-Zugriff auf Ihren Computer.quelle
sudo x install
, für allex
(einschließlichx = make
).--user
installiert das Paket in Ihrem Home-Verzeichnis und nicht im Stammverzeichnis. Für die Installation von etwas an diesem Speicherort sind keine zusätzlichen Berechtigungen erforderlich.sudo
wurden vor einem Jahr entfernt. Diese Antwort ist veraltet - bitte überarbeiten und aktualisieren Sie sie. Sie müssen auch die Installation pro Benutzer im Vergleich zu systemweiten Installationen und Berechtigungen angeben. Verwenden Sie Ihre Antwort nicht, um andere Antworten direkt zu kritisieren, da diese schnell veraltet sind.Sie versuchen, ein Paket auf dem systemweiten Pfad zu installieren, ohne die Berechtigung dazu zu haben.
Im Allgemeinen können Siesudo
vorübergehend Superuser- Berechtigungen in Ihrer Verantwortung abrufen, um das Paket auf dem systemweiten Pfad zu installieren:Mehr dazu finden Siesudo
hier .Eigentlich ist das eine schlechte Idee und es gibt keinen guten Anwendungsfall dafür, siehe @ wims Kommentar.
Wenn Sie keine systemweiten Änderungen vornehmen möchten, können Sie das Paket mithilfe des Flags auf Ihrem Benutzerpfad installieren
--user
.Alles was es braucht ist:
Schließlich können Sie für eine noch feinere Steuerung auch eine virtuelle Umgebung verwenden , die möglicherweise die überlegene Lösung für eine Entwicklungsumgebung darstellt, insbesondere wenn Sie an mehreren Projekten arbeiten und die Abhängigkeiten der einzelnen Projekte verfolgen möchten.
Nach dem Aktivieren Ihrer virtuellen Umgebung mit
$ my-virtualenv/bin/activate
Der folgende Befehl installiert das Paket innerhalb der virtuellen Umgebung (und nicht im systemweiten Pfad):
pip install -r requirements.txt
quelle
pyenv/pipenv
erwähnen, anstattvirtualenv
(oderconda-env
) b) Sudo als schädlich zu betrachten, und sehen die anderen Antworten, warum. Stellen Sie also die env-basierte Antwort an die erste und die sudo-Antwort an die letzte Stelle mit einem großen Haftungsausschluss.sudo pip install -r requirements.txt
ist nie richtig. Die Python-Umgebung des Systems gehört zum System, Punkt . Wenn Sie mehr Python Sachen in das System zu tun installieren, tun Sie es mit Paket - Manager nur (zBsudo yum install
,apt-get
etc ...) , da diese repos sichere und kompatible Versionen von Bibliotheken Erfolg haben sollte.sudo make install
, normalerweise kompilierte + verknüpfte Code ist nicht wirklich analog zu a,sudo pip install
da die Installation auf dem System Python env Abhängigkeiten ungültig machen kann . Angenommen, es gibt einen Systemdienstpython-frobnicator
, von dem eine Abhängigkeit bestehtfroblib
(dieser befindet sich ebenfalls im Paketmanager und ist an eine kompatible Version gebunden), und dannsudo pip install
eine andere App oder Bibliothek, die von "froblib > 1.2
" abhängig ist . Pip wird die Systemversion von gernefroblib
mit einer neueren Version "aktualisieren" , die möglicherweise nicht kompatibel / ungetestet ist und das System beschädigt.Nur um zu klären, was für mich nach vielen Schmerzen in Linux (Ubuntu-basiert) aufgrund von Fehlern, denen die Erlaubnis verweigert wurde, funktioniert hat, und um die oben genannte Antwort von Bert zu nutzen, verwende ich jetzt ...
oder wenn pip auf einer Anforderungsdatei ausgeführt wird ...
und diese funktionieren zuverlässig für jede Pip-Installation, einschließlich der Erstellung virtueller Umgebungen.
Die sauberste Lösung meiner weiteren Erfahrung war jedoch die Installation
python-virtualenv
undvirtualenvwrapper
mitsudo apt-get install
auf Systemebene.Verwenden Sie dann in virtuellen Umgebungen
pip install
ohne--user
Flag UND ohnesudo
. Insgesamt viel sauberer, sicherer und einfacher.quelle
pip install --user -r requirements.txt
Der Benutzer hat keine Schreibberechtigung für einige Python-Installationspfade. Sie können die Erlaubnis geben durch:
Sie sollten also die Berechtigung erteilen und dann versuchen, sie erneut zu installieren. Wenn Sie neue Pfade haben, sollten Sie auch die Berechtigung erteilen:
quelle
/usr
heutzutage normalerweise Root. Das rekursive Chowning dort könnte Ihr System erheblich vermasseln. VERMEIDEN .Wenn Sie Berechtigungen benötigen, können Sie 'pip' nicht mit 'sudo' verwenden. Sie können einen Trick machen, damit Sie 'sudo' verwenden und das Paket installieren können. Platzieren Sie einfach 'sudo python -m ...' vor Ihrem pip-Befehl.
quelle
Ich habe also genau diesen Fehler aus einem ganz anderen Grund erhalten. Aufgrund eines völlig separaten, aber bekannten Homebrew + pip-Fehlers habe ich diese in den Hilfedokumenten von Google Cloud aufgeführte Problemumgehung befolgt, in der Sie eine .pydistutils.cfg-Datei in Ihrem Home-Verzeichnis erstellen. Diese Datei verfügt über eine spezielle Konfiguration, die Sie nur für die Installation bestimmter Bibliotheken verwenden sollen. Ich hätte diese Datei disutils.cfg nach der Installation der Pakete entfernen sollen, aber ich habe vergessen, dies zu tun. Das Update für mich war also eigentlich nur ...
rm ~/.pydistutils.cfg
.Und dann hat alles wie gewohnt funktioniert. Wenn Sie aus einem echten Grund eine Konfiguration in dieser Datei haben, möchten Sie diese Datei natürlich nicht einfach direkt speichern. Aber falls jemand anderes diese Problemumgehung durchgeführt und vergessen hat, diese Datei zu entfernen, hat dies den Trick für mich getan!
quelle
Es ist ein Problem mit der Berechtigung,
Standard wäre es
/usr/local/lib/python2.7/
oder Versuche,
und sagen Sie dann,
pip install -r requirements.txt
dies wird in Ihrer Umgebung installiertSagen Sie nicht,
sudo pip install -r requirements.txt
dies wird in einem beliebigen Python-Pfad installiert.quelle