38 Stimmen

Python-Pakete werden mit pip nicht in virtualenv installiert

Ich habe Probleme bei der Installation von Twisted

pip --version

pip 1.1 von /home/chris/GL/GLBackend/glenv/lib/python2.7/site-packages/pip-1.1-py2.7.egg (python 2.7)

Erstellen einer virtuellen Umgebung

chris@chris-mint ~/GL/GLBackend $ sudo virtualenv -p python2.7 glenv

Ausführen von virtualenv mit Interpreter /usr/bin/python2.7 Neues Python Ausführbare Datei in glenv/bin/python2.7 Erstellt auch eine ausführbare Datei in glenv/bin/python Installation von distribute.............................................................................................................................................................................................done. Installation von pip...............erledigt.

Vorsichtshalber werde ich alle Berechtigungen aktivieren.

chris@chris-mint ~/GL/GLBackend $ sudo chmod -R 777 glenv

chris@chris-mint ~/GL/GLBackend $ source glenv/bin/activate

(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze

argparse==1.2.1 distribute==0.6.24 wsgiref==0.1.2

twisted ist hier nicht als installiert aufgeführt

(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted

Anforderung bereits erfüllt (zum Aktualisieren --upgrade verwenden): twisted in /usr/local/lib/python2.7/dist-packages Anforderung bereits erfüllt (us /usr/local/lib/python2.7/dist-packages (von twisted) Anforderung bereits erfüllt (benutze --upgrade um zu aktualisieren): distribute in /usr/local/lib/python2.7/dist-packages (von zope.interface>=3.6.0->twisted) Aufräumen... (glenv)chris@chris-mint ~/GL/GLBackend $ pip uninstall twisted Kann Anforderung nicht deinstallieren twisted, nicht installiert Vollständiges Protokoll speichern in /home/chris/.pip/pip.log

Aber wenn ich es installiere, sagt es, dass es bereits installiert ist. Erzwingen Sie die Installation:

sudo pip install -I twisted

Herunterladen/Entpacken von Twisted Herunterladen von Twisted-12.3.0.tar.bz2 (2.6Mb): 2.6Mb heruntergeladen Ausführen von setup.py egg_info für das Paket twisted . . .

Erfolgreich installiert: twisted zope.i aufräumen...

Und trotzdem ist es noch nicht installiert

(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze

argparse==1.2.1 distribute==0.6.24 wsgiref==0.1.2

**Wenn ich versuche, Python-Skripte auszuführen, die Twisted verwenden, erhalte ich die Fehlermeldung, dass Twisted nicht installiert ist. Das ist:

ImportFehler: Kein Modul namens twisted.python**

60voto

abarnert Punkte 332066

Das Problem dabei ist, dass Sie sudo wenn Sie es nicht sein sollten. Und das ist die Ursache pip zu versuchen, zu installieren in /usr/local/lib anstelle von ~/glenv/lib . (Und, weil Sie sudo erfolgreich, aber das hilft Ihnen nicht weiter, weil Sie keine System-Site-Pakete in Ihrem Venv. zulassen).

Es gibt mehrere Gründe sudo pip könnten zu diesem Verhalten führen, aber am wahrscheinlichsten ist dies: Auf den meisten Systemen (einschließlich der verschiedenen Mac- und RHEL/CentOS-Rechner, zu denen ich unmittelbaren Zugang habe), wird die sudoers Datei setzt Ihre Umgebung zurück und fügt dann eine Handvoll weißer Umgebungsvariablen wieder ein. Das bedeutet, dass Sie, wenn Sie sudo pip wird es die Umgebungsvariablen nicht sehen, die virtualenv einrichtet, wird es auf die Standardeinstellung zurückgreifen und in Ihr System Python statt in Ihr venv installieren.

Aber eigentlich ist es egal. warum dies geschieht. Die Antwort ist dieselbe: einfach tun pip install anstelle von sudo pip install .

Beachten Sie, dass Sie auch entfernen möchten, die sudo en el virtualenv aufrufen, da dies wahrscheinlich dazu führt, dass das venv falsch eingerichtet wird (deshalb brauchen Sie die sudo chmod was sonst nicht nötig wäre). Der Sinn der Installation von Dingen in Ihrem Benutzerverzeichnis ist, dass Sie dies mit Ihren normalen Benutzerrechten tun können.

Nebenbei bemerkt, sollten Sie auch ein Upgrade auf eine neuere virtualenv / pip 1.8 und 1.2 haben einige Fehlerbehebungen und Verbesserungen. Aber ich habe überprüft, dass ich genau das gleiche Problem wie Sie auch mit den neuesten (1.8.4 und 1.2.1) Versionen erhalten, so dass ich nicht glaube, dass das hier relevant ist.

0voto

Abhimanyu Dwivedi Punkte 212

En sudo pip ist hier die Ursache des Problems. Das Paket wird in Ihrem System installiert und nicht in der von Ihnen erstellten virtuellen Umgebung. Wenn es also sagt, dass die Anforderung bereits erfüllt ist. Versuchen Sie, das Verzeichnis, auf das es verweist, hinzuzufügen. Das ist in Ihrem Fall, während Sie versuchen zu installieren, war /usr/local/lib/python2.7/dist-packages

Wenn es sich in etwas wie /usr/local/lib/... der nicht auf Ihren virtualenv-Ordner verweist, dann ist er in Ihrem System installiert. Andernfalls sieht es im richtigen Szenario etwa so aus /usr/local/lib/..../<name of your virtualenv>/lib .

Sie können jederzeit Befehle verwenden wie which python & which pip um zu sehen, ob sie beide den Platzhalter unserer virtuellen Umgebung verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X