PIP wird nicht im Verzeichnis virtualenv installiert

10

Ich versuche, Django auf einer bereits vorhandenen virtuellen Umgebung zu installieren.

Nach den Anweisungen auf der Pip-Install-Website hier habe ich Folgendes von SSH ausgeführt.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

Am Ende der Installation sehe ich jedoch Folgendes:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Es scheint, dass versucht wird, es im globalen Verzeichnis zu installieren. Ich habe keine Sudo-Privilegien. Mache ich hier etwas falsch

Update: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Luke Sapan
quelle
Funktioniert es für andere Pakete korrekt? Haben Sie das gleiche Problem, wenn Sie verwenden easy_install?
Larsks
Gleiches Problem mit anderen Paketen. Und ich glaube, dass easy_install sudo benötigt und in das globale Verzeichnis installiert wird.
Luke Sapan
Nein, wenn Sie eine virtuelle Umgebung einrichten, erhalten Sie sowohl easy_install als auch pip. Sie können which easy_installeingeben, um festzustellen, ob Sie Ihre virtuelle oder die Systemumgebung verwenden.
Larsks
Sind Sie sicher, dass Sie pip innerhalb der virtuellen Umgebung ausführen? Was ergibt sich which pip? Und siehst du piphinein myenv.env/bin/?
Larsks
Ich sehe pip in myenv.env / bin /. Ich habe gerade versucht, meine Umgebung erneut zu "aktivieren", und obwohl ich mich in diesem Modus befinde, geben "which pip" und "which easy_install" beide "usr / local / bin / pip" bzw. "usr / bin / easy_install" zurück.
Luke Sapan

Antworten:

6

Entschuldigung für ein Jahr verspätete Antwort! Ich hatte das gleiche Problem und habe es behoben. Ich weiß nicht, ob Sie den Namen eines Verzeichnisses nach dem Erstellen der virtuellen Umgebung geändert haben. Wenn ja, dann habe ich Folgendes getan.

1.) deactivatedein v-env. Nach dem Fix müssen Sie die v-env neu starten, vielleicht auch deactivatejetzt. Recht?

2.) Da wir nun die v-env in einem anderen Pfad erstellt haben, müssen wir die statischen Pfadvariablen in diesen Dateien ändern.

Um Pip zum Laufen zu bringen, musst du das nicht tun, aber ich tue es immer noch. bin/activate, bin/activate.csh, bin/activate.fish

bin/pip, bin/pip2, bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Damit pip funktioniert, müssen Sie den Python-Interpreter in der Pip-Datei korrigieren. Auch dieser hat einen statischen Interpreter-Speicherort, der von virtualenv im Erstellungsprozess festgelegt wurde.

4.) Damit easy_install funktioniert? Sie haben es erraten, korrigieren Sie den Dolmetscherstandort.

Ich hoffe, dass dies allen, die dies lesen, in Zukunft geholfen hat. Sorry OP, für die Verspätung.

Knusprig
quelle
Ja das war es genau. In meinem Fall konnte ich die virtuelle Umgebung einfach von Grund auf neu erstellen und das hat es gelöst.
Luke Sapan
Crispy
Ich bin so froh, endlich eine Antwort zu finden. Für mich hat die Verwendung von sed im venv-Ordner die Arbeit erheblich erleichtert. So etwas wie grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. Quelle
Keith
Sie sagen: "Damit pip funktioniert, müssen Sie den Python-Interpreter in der pip-Datei korrigieren." Wo und wie wird das gemacht?
Dave
3

Ich hatte das gleiche Problem.

Ich habe die virtuelle Umgebung gelöscht und eine neue erstellt, die das Problem gelöst hat.

Wahrscheinlich nicht die Antwort, auf die Sie gehofft haben, aber da es die einzige ist ...

Kennzeichen
quelle
1

Nun, ohne Administratorrechte sind Sie sehr eingeschränkt in dem, was Sie tun können. Wenn Sie sich nicht erheben oder nach Berechtigungen fragen dürfen, besteht der beste Weg, dies zu tun, darin, eine andere Umgebung zu erstellen, eine Datei "require.txt" zu erstellen und alle benötigten Pakete auf Ihren Computer (django) herunterzuladen befindet sich auch in Ihrer Anforderungsdatei und es sollte funktionieren.

Secure212
quelle
0

Hatte das gleiche Problem. In meinem Fall war der Grund, dass die erstellte virtuelle Umgebung für Python2.7 (Standardeinstellung) war, ich jedoch pip3 zum Installieren eines Pakets verwendete. pip3 war in meiner virtuellen Umgebung nicht vorhanden, daher wurde standardmäßig die globale Version verwendet. Für mich war das Update zu verwenden

virtualenv flask --python=python3

um die env zu erstellen.

Adversus
quelle
0

Ich hatte das gleiche Problem festgestellt, das durch das Umbenennen des Benutzers verursacht wurde. Crispys Antwort ist völlig richtig. Und meine Lösung könnte bequemer sein.

setps:
1. Geben Sie den Bin-Pfad Ihrer virtuellen Umgebung ein, z. B. cd ~/virenv_dir/bin
2. Benennen Sie alle Dateien in diesem Verzeichnis mit dem Befehl sed um.sed -i 's/old_name/new_name/' *

xialu
quelle
0

In meinem Fall hatte ich zwei Aliase definiert (um ein anderes Problem in der Standard-Python-Version zu beheben):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

Und dies verursachte die gleichen Symptome:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

Durch Entfernen der Aliase wurde das Problem behoben (vor oder nach dem Erstellen der virtuellen Umgebung).

Coderazzi
quelle
0

Beim Aufrufen sudo pipwird global pip und nicht pip in Ihrer virtuellen Umgebung aufgerufen. Aktivieren / bearbeiten Sie Ihre Umgebung und rufen Sie dann einfach an pip, nicht sudo pip, dies kann Ihr Problem beheben, wie es bei mir der Fall war .

Milton Walker
quelle