Python Virtualenv - Kein Modul mit dem Namen virtualenvwrapper.hook_loader

79

Ich verwende Mac OS 10.6.8. und wollte neben python 2.6 auch python 2.7 installieren und python 2.7 in einer neuen virtualenv verwenden. Ich habe folgende Schritte ausgeführt:

Ich habe Python 2.7 heruntergeladen und installiert:

http://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg

Dann führe ich den Befehl aus, um mit python2.7 eine neue virtuelle Umgebung einzurichten:

mkvirtualenv --python=python2.7 mynewenv

Mein .bash_profile sieht folgendermaßen aus:

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh


# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

Wenn ich jetzt die Konsole öffne, wird die folgende Fehlermeldung angezeigt.

ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is set properly.

Ich habe auch in einem anderen Beitrag festgestellt, dass ich virtualenvwrapper aktualisieren sollte. Das hat nicht geholfen.

sudo pip install virtualenvwrapper --upgrade

Jede Hilfe wäre dankbar.

Thomas Kremmel
quelle
4
Hast du dies oder könnten Sie andere Weise versucheneasy_install
admire
Danke ich habe mir den Beitrag angesehen. Es gelingt mir jedoch nicht, virtualenv für Python 2.7 zu installieren. Die Meldung lautet, dass virtualenv bereits für 2.6 installiert ist. Ich habe die folgenden Befehle ausgeführt: ~ TK $ which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python ~ TK $ sudo pip install virtualenv Anforderung bereits erfüllt (benutze --upgrade zum Upgrade): virtualenv in / Bibliothek / Python / 2.6 / site-packages / virtualenv-1.6-py2.6.egg Aufräumen ...
Thomas Kremmel
Ich habe gerade den Status eines Virtualenvs überprüft und es sieht nicht so aus, als würde es Py 2.7 unterstützen.
Martineau
2
Nur eine Anmerkung - ich habe dieses Problem in einem anderen Fall getroffen. Ich habe angefangen, eine virtuelle Umgebung über zu erstellen mkvirtualenvund habe sie dann (mit Ctrl+C) gestoppt . Beim Versuch, die virtuelle Umgebung erneut zu erstellen, gab es einige Reste vom letzten Mal. Ich ging in meinen envs-Ordner und löschte die unvollständig erstellte Umgebung. Danach mkvirtualenvfunktionierte der gleiche Befehl ordnungsgemäß.
Driftcatcher
2
Yibo Yangs Kommentar war auch für meine Ubuntu-Installation genau richtig. Seien Sie vorsichtig mit der Schreibweise ... das obige sollte VIRTUALENVWRAPPER_PYTHON = / usr / bin / python3 mit dem "v" in VIRTUALENVWRAPPER exportieren
Kevin

Antworten:

53

Das Problem wurde mit den folgenden Schritten behoben:

#switch the /usr/bin/python link to point to current python link
cd /usr/bin
sudo mv python python.bak
sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python python

Ordnen Sie den Exportbefehl neu an, damit er vor den virtualenv-Befehlen in meiner .bash_profile-Datei platziert wird:

PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH
export PATH

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Setuptools neu installieren, einfach installieren und PIP. Dies ist offensichtlich erforderlich, damit sie mit der neuen Python-Version ordnungsgemäß funktionieren:

sudo sh setuptools-0.6c11-py2.7.egg

sudo easy_install-2.7 pip

pip install virtualenv
Thomas Kremmel
quelle
1
Vielen Dank - nach dem Upgrade meiner Python 2.7-Installation auf Mac Mountain Lion hatte ich das gleiche Problem und dies hat es behoben.
A. Jesse Jiryu Davis
3
Bei Mountain Lion bestand der Trick für mich darin, sicherzustellen, dass der Pfad für / opt / local / bin VOR der Quellzeile festgelegt wurde. Ich musste mich nicht mit den OSX Python-Links in / usr / bin oder irgendetwas anderem anlegen. Auch WORKON_HOME ist jetzt voreingestellt, wenn es nicht auf $ HOME / .virtualenvs gesetzt ist
Mark
4
+1 für @ Mark Kommentar. Auch für Brauanwender: Der tatsächliche Pfad ist usr/local/Cellar/python/<PYTHON-VERSION>/bin/.
Rsenna
Danke, es hilft mir, nachdem ich Python 2.7.4 in Debian kompiliert habe.
Zulu
In meinem Fall trat das Problem nur auf, weil ich versuchte, mich remote bei einem anderen Computer anzumelden. Hinweis: Dies bedeutet, dass das Problem nicht auf dem lokalen Computer liegt, sondern auf dem Computer, auf dem Sie sich anmelden! Ich dachte, ich würde es erwähnen, falls sich jemand an dieser Stelle befindet.
smileBot
23

Wenn Sie Macports haben, stellen Sie außerdem sicher, dass diese /opt/local/Library/Frameworks/Python.framework/Versions/2.7/binvor /Library/Frameworks/Python.framework/Versions/2.7/binund /usr/local/binin PATH aufgeführt sind. Stellen Sie dann Folgendes in Sie ein .profile:

export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`
reubano
quelle
4
Ich installiere Python3 neben meinem Betriebssystem Python2 und die Einstellung hat VIRTUALENVWRAPPER_PYTHONmein Problem gelöst.
Johan Gov
8

In meinem Fall hat das Hinzufügen dieser Zeile zu meiner .zshrc-Datei den Trick getan:

export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7
Pecai
quelle
3
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6für die neueste Version.
oba2311
in meinem bash_profileexport VIRTUALENVWRAPPER_PYTHON="which python3"
Fai Zal Dong
7

Für alle, die Ubuntu 18.04 und Python 3+ verwenden , war dies der Trick für mich:

which python3 # outputs /usr/bin/python3 
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  
source `which virtualenvwrapper.sh`  
Kalob Taulien
quelle
4

Dies ist mir passiert und ich habe es durch Neuinstallation gelöst pip. Was hatte geschah war , dass which pipgab /usr/bin/pipals Ergebnis, während which pythongab /usr/local/bin/python. Der Weg für pipsollte sein /usr/local/bin/pip. Dies ist wahrscheinlich kaputt gegangen, als ich meine Python-Installation aktualisiert habe.

Wenn Sie der Pip-Dokumentation folgen , können pipSie das aktuelle Python-Setup problemlos neu installieren . Du brauchst:

  1. Laden Sie das Skript get-pip.py herunter (direkt verlinkt vonpip der Dokumentation ).
  2. Ausführen python get-pip.py.

Dies löste das Problem für mich.

Omar Trejo
quelle
3

Es gibt eine Reihe von Dingen, die diesen Fehler verursachen können. Wenn Ihre Umgebung ist

  • CentOS 7, mit python3installiert vonepel-release
  • pip3 installiert mit python3.4 get-pip.py
  • virtualenvwrapper installiert mit pip3
  • Eine virtuelle Python-Umgebung, die mit erstellt wurde mkvirtualenv -p /usr/bin/python3.4

Aus irgendeinem Grund wird dann die virtuelle Umgebung ohne die virtualenvwrapper-Bibliothek erstellt. Sie können es lösen, indem Sie es einfach erneut installieren, diesmal jedoch innerhalb der virtuellen Umgebung

[user@localhost ~] $ mkvirtualenv -p /usr/bin/python3.4 venv
Using base prefix '/usr'
New python executable in /home/user/.virtualenvs/venv/bin/python3.4
Also creating executable in /home/user/.virtualenvs/venv/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/preactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/get_env_details
/home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')
/home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')

# the virtualenv should now activated
(venv)[user@localhost ~] $ pip install virtualenvwrapper
drs
quelle
2

Ich musste nur sicherstellen, dass / usr / local / bin / python existiert.

Für mich war es einfach:

ln -s /usr/local/bin/python2.7 /usr/local/bin/python
Staubinfarris
quelle
1

Ich bekomme den gleichen Fehler. Ich fand heraus, dass ich eine alte Version von Pip hatte. Ich habe den Fehler durch einfaches Upgrade des Pip behoben.

Chinmay Das
quelle
0

Ich habe gerade Python 3.5 installiert, den virtualenvwrapper ausprobiert und hatte dann dieses Problem. Mir wurde klar, dass python3.5 installiert war /usr/local/bin/python3.5und NICHT /usr/bin/python3.5. Also habe ich mein .bash_profile-Skript so überarbeitet, dass es wie folgt aussieht, und jetzt scheint alles zu funktionieren

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.5
export WORKON_HOME=$HOME/.virtualenvs
source /Users/bentaub/.virtualenvs/djangodev/bin/virtualenvwrapper.sh

Ich bin ein Anfänger genug, um nicht sicher zu sein, wie sich dieses "Lokal" auf dem Weg zu Python3.5 auf lange Sicht auf mich auswirken wird, aber im Moment funktioniert es.

Ben
quelle
0

Ich hatte dieses Problem nach der Deinstallation des virtualenvwrapperPakets. Wenn ich mich bei einem Benutzer (oder sueinem anderen) anmeldete, erhielt ich:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader                                                                                                                                                                       
virtualenvwrapper.sh: There was a problem running the initialization hooks.                                                                                                                                                      

If Python could not import the module virtualenvwrapper.hook_loader,                                                                                                                                                             
check that virtualenv has been installed for                                                                                                                                                                                     
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is                                                                                                                                                                        
set properly.

Die Lösung bestand darin, die /etc/bash_completion.d/virtualenvwrapperDatei zu löschen .

Bearbeiten:

Löschen Sie die obige Datei nicht, da sie sonst bei einer Neuinstallation nicht neu erstellt wird virtualenvwrapper. Stattdessen müssen Sie purgedas virtualenvwrapperPaket bei der Deinstallation ausführen. So auf Debian:

apt-get remove --purge virtualenvwrapper
Mike
quelle
0

Versuchen Sie, Ihr virtualenvund zu deinstallieren und virtualenvwrappererneut mit pipVersion 2.7 zu installieren (glaube ich).

Ich bin auf den gleichen Fehler gestoßen und habe dies einfach getan und mein Problem gelöst.

Ich benutze U.

manilaT
quelle
0

Obwohl es eine akzeptierte Antwort gibt, dachte ich, ich würde sagen, was es für mich behoben hat.

Zuerst habe ich Python installiert und es gerade über Homebrew aktualisiert . Ich verwende auch ZSH. Wenn einige Bits nicht ganz mit Ihrer Ausgabe übereinstimmen, ist dies möglicherweise der Grund.

Durch Ausführen von Brew Info Python und Durchsuchen der Ausgabe habe ich die folgenden netten Informationen gefunden:

If you wish to have this formula's python executable in your PATH then add
the following to ~/.zshrc:
    export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Also habe ich dies wie gezeigt zu meinem Terminal-Startskript hinzugefügt und der Fehler n wird länger angezeigt.

Hinweis: Ich habe dies in einen anderen Teil meines PFADS eingefügt und der Fehler blieb beim Start bestehen.

Skepi
quelle
0

Nach der Installation des Conda / Anaconda-Projekts ist ein ähnliches Problem aufgetreten. Diese Frage war sehr hilfreich bei der Lösung meines Problems unter MAC. Bei der Lösung des Problems sah mein .zshrcrelevanter Teil folgendermaßen aus:

export VIRTUALENVWRAPPER_PYTHON=$HOME/Applications/conda/bin/python
source $HOME/Applications/conda/bin/virtualenvwrapper.sh

Dies hängt davon ab, wo ich conda installiert habe, und Sie müssen das in Ihrem eigenen Fall herausfinden. Um die Details für Ihre gegebene Umgebung zu erhalten, je nachdem, wo Sie Anaconda installiert haben, können Sie Folgendes verwenden:

$  ~/ -name virtualenvwrapper.sh # to see where you have this. May already be prefilled in your shell profile[.zshrc or .profile]

$ which python   # to know the default python your project or rather where conda has installed python for you

VERGESSEN SIE NICHT, virtualenv und virtualenvwrapper zu deinstallieren und zu installieren, wie in anderen Antworten hervorgehoben.

ArdentLearner
quelle
0

Ich bin gerade auf einem Centos 7.4 auf dieses Problem gestoßen.

Keine der obigen Antworten passte zu meinem Fall. Nachdem ich mich ein bisschen umgesehen hatte, stellte ich fest, dass dies zu strenge Dateiberechtigungen in Python-Bibliotheken sind (ich denke, die Python-Installation unter Centos unterscheidet sich ein wenig von anderen POSIX-Systemen).

Wenn also alles andere fehlschlägt, möchten Sie möglicherweise überprüfen, ob Ihre Python-Bibliotheken für den Benutzer lesbar sind, mit dem Sie virtualenvwrapper ausführen möchten.

Überprüfen Sie insbesondere: /usr/lib/python3.6 /usr/lib64/python3.6 (Ändern Sie die Pfade für verschiedene Python-Versionen).

Wenn Sie dies sehen groupund dort otherskeine Lese- und Ausführungsberechtigungen haben, fügen Sie diese hinzu: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

Hinweis: Ich bin nicht sicher, ob dies gegen eine Centos-Sicherheitsrichtlinie verstößt, aber es ist wahrscheinlich sicher, solange Sie keine writePersmisionen geben .


quelle
0

In meiner Situation (OS X 10.13.6) hat dies funktioniert

brew install python2 --upgrade
Jay
quelle
0

Ich hatte das gleiche Problem wie dieses und verbrachte so viel Zeit damit, herauszufinden, was falsch war. Und ich fand endlich heraus, was los war.

Zuerst habe ich gesucht, wo der Ordner virtualenvwrapper existiert. In meinem Fall /usr/local/lib/python3.7/site-packages. Im Ordner befindet sich hook_loader.py, der den Fehler verursacht hat.

Als nächstes habe ich Python-Skript verwendet.

python3

import sys;print('\n'.join(sys.path))

Ich konnte das Verzeichnis /usr/local/lib/python3.7/site-packages nicht finden, also schrieb ich endlich:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages

zur .bashrc-Datei. Getan.

Bedeutung von PYTHON PATH

Wie Sie im obigen Link sehen können, erweitert PYTHONPATH den Standardsuchpfad für Module.

MeNinLes
quelle