web-dev-qa-db-ger.com

Problem mit Virtualenv unter Mac OS X

Ich habe virtualenv über pip installiert und bekomme diese Fehlermeldung, nachdem ich eine neue Umgebung erstellt habe: 

Selenium:~ auser$ virtualenv new  
New python executable in new/bin/python  
ERROR: The executable new/bin/python is not functioning  
ERROR: It thinks sys.prefix is u'/System/Library/Frameworks/Python.framework/    Versions/2.6' (should be '/Users/user/new')  
ERROR: virtualenv is not compatible with this system or executable  

In meiner Umgebung: 

PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages  
PATH=/System/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin  

Wie kann ich das reparieren?

Vielen Dank.

41
gigimon

Wenn Sie weiterhin Probleme mit virtualenv haben, können Sie stattdessen pythonbrew versuchen. Es ist eine alternative Lösung für dasselbe Problem. Es funktioniert mehr wie Rubys rvm : Es erstellt und erstellt eine vollständige Instanz von Python unter $HOME/.pythonbrew und richtet dann einige Bash-Funktionen ein, mit denen Sie problemlos zwischen den Versionen wechseln können. Wenn virtualenv die Systemversion von Python unter Verwendung von symbolischen Links als Teil seiner Lösung im Schatten stellt, erstellt pythonbrew vollständig in sich geschlossene Installationen von Python.

Ich habe jahrelang virtualenv verwendet. Es ist eine anständige Lösung, aber ich habe in letzter Zeit auf pythonbrew umgestellt. Das Vorhandensein vollständig unabhängiger Python-Instanzen bedeutet, dass die Installation einer neuen Instanz eine Weile dauert (da pythonbrew Python tatsächlich von Grund auf neu kompiliert), aber die in sich geschlossene Natur jeder Installation gefällt mir. Und Scheibe ist billig.

0
Brian Clapper

Nur für den Fall, dass noch jemand nach der Antwort sucht.

Ich bin gerade heute auf dieses Problem gestoßen und habe gemerkt, dass ich Anaconda bereits installiert habe. Ich hätte pip install virtualenv nicht zur Installation der virtuellen Umgebung verwenden sollen, da mir dies beim Versuch, es später einzuleiten, die Fehlermeldung angezeigt wird. Stattdessen habe ich versucht, conda install virtualenv und dann virtualenv env_mysite einzugeben, und das Problem wurde gelöst.

108
wastetime909

Falls in der Zukunft jemand auf dieses Problem stößt, liegt dies daran, dass Ihre Standard-Python-Distribution Conda ist. Conda hat seine eigene virtuelle Umgebung set up-Prozess , aber wenn Sie die Conda-Verteilung von Python haben und trotzdem virtualenv verwenden möchten, dann gehen Sie folgendermaßen vor

  1. Finden Sie die andere Python-Distribution auf Ihrem Computer: ls -ls /usr/bin/python*

  2. Beachten Sie die verfügbare Python-Version, die nicht conda ist, und führen Sie den folgenden Code aus (Hinweis für Python 3 und höher müssen Sie zunächst die Aktualisierung von virtualenv durchführen): virtualenv -p python2.7(or your python version) flaskapp

6
Hans Ziqiu Li

Wie @RyanWilcox erwähnt, weisen Sie möglicherweise virtualenv unabsichtlich auf die falsche Python-Installation hin. Virtualenv enthält ein -p-Flag, mit dem Sie angeben können, welcher Interpreter verwendet werden soll.

In meinem Fall,

virtualenv test_env

warf den gleichen Fehler wie du

virtualenv -p python test_env

hat perfekt funktioniert.

Wenn Sie virtualenv -h aufrufen, wird Ihnen in der Dokumentation für das -p-Flag angezeigt, welcher Python es zu verwenden glaubt. Wenn es nicht so aussieht, versuchen Sie es mit -p python. Als Referenz bin ich auf Virtualenv 1.11.6.

5
kronosapiens

Ich bin selbst auf dieses Problem gestoßen. Ich habe die Anweisungen in einem README aufgeschrieben, das ich unten eingefügt habe ....

Ich habe festgestellt, dass zwei Dinge funktionieren, die funktionieren:

  1. Stellen Sie sicher, dass Sie die neueste Virtualenv (1.5.1, dieses Schreibens) ausführen.
  2. Wenn Sie einen Nicht-System-Python als Standard-Python verwenden (den zu überprüfenden Python), verwenden Sie das vom System gelieferte System.

    Anstelle von virtualenv thing verwenden Sie /usr/bin/python2.6 PATH/TO/VIRTUALENV thing (oder was auch immer which python an Sie zurückgegeben wurde. Dies hat es für mich getan, als ich auf dieses Problem stieß).

4
RyanWilcox

Ich hatte das gleiche Problem und wie ich es jetzt sehe, wurde es durch eine chaotische Python-Installation verursacht. Ich habe OS X seit über einem Jahr installiert, seit ich einen neuen Laptop gekauft habe. Ich habe Python bereits mehrmals mit verschiedenen Quellen installiert und neu installiert (offizielle Binaries, Homebrew, offizielle Binaries + handgefertigte Anpassungen wie beschrieben hier ). . Fragen Sie mich nicht, warum ich das getan habe. Ich bin nur ein unglücklicher Neuling, der daran glaubt, dass sich nach der Neuinstallation alles repariert. 

Ich hatte also hier und da eine Reihe verschiedener Pythons installiert und viele Hardlinks, die uneinheitlich auf sie zeigen. Irgendwann habe ich alle satt und oS X neu installiert Das System wurde sorgfältig von allen Pythons gesäubert, die ich mit dem Dienstprogramm find gefunden hatte. Außerdem habe ich alle Links aufgehoben, die von überall auf Python verweisen. Dann habe ich einen neuen Python mit Homebrew installiert, virtualenv installiert und alles funktioniert jetzt wie ein Zauber.

Mein Rezept lautet also:

Sudo find / -iname "python*" > python.log

Dann analysieren Sie diese Datei, entfernen und verknüpfen Sie alles, was mit der Python-Version zusammenhängt, die Sie benötigen, installieren Sie sie neu (ich habe es mit Homebrew gemacht, vielleicht funktioniert auch die offizielle Installation) und genießen Sie es. Stellen Sie sicher, dass Sie die Verknüpfung aller Python-bezogenen Elemente von /usr/bin und /usr/local/bin aufheben und alle Instanzen von Frameworks/Python.framework/Versions/<Your.Version> in /Library und /System/Library entfernen. 

Es mag ein schmutziger Hack sein, aber es hat für mich funktioniert. Ich ziehe es vor, keine systemweiten Python-Bibliotheken außer pip und virtualenv beizubehalten und virtuelle Umgebungen für alle meine Projekte zu erstellen, sodass es mir nicht wichtig ist, die wichtigen Bibliotheken zu entfernen. Wenn Sie nicht alles entfernen möchten, versuchen Sie trotzdem zu verstehen, ob Ihre Pythons sind, welche Links darauf verweisen und woher. Überlegen Sie dann, was das Problem verursachen könnte, und beheben Sie es.

Die obigen Lösungen sind für mich fehlgeschlagen, aber es hat funktioniert:

python3 -m venv --without-pip <ENVIRONMENT_NAME>
. <ENVIRONMENT_NAME>/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
deactivate

Es ist hackig, aber ja, das Kernproblem schien einfach zu sein.

1
Jerry Schirmer

Ich bin auf eine Variante dieses "nicht funktionierenden" Fehlers gestoßen. Ich habe versucht, eine Umgebung in einem Ordner zu erstellen, der den Pfad ".../Programming/Developing ..." enthielt, der eigentlich "/ Users/eric" ist/Dokumente/Programmieren: Entwickeln/"

und bekam diesen Fehler:

ImportError: No module named site
ERROR: The executable env/bin/python2.7 is not functioning
ERROR: It thinks sys.prefix is u'/Users/eric/Documents/Programming:Developing/heroku' (should be u'/Users/eric/Documents/Programming:Developing/heroku/env')
ERROR: virtualenv is not compatible with this system or executable

Ich habe das gleiche in einem anderen Ordner ausprobiert und es hat gut funktioniert, keine Fehler und env/bin hat was ich erwarte (aktivieren etc.).

1
E Negron

Ich habe das gleiche Problem und habe festgestellt, dass dies der Fall ist, wenn Sie den Namen der ausführbaren Python-Datei nicht richtig angeben. Also für Python 2x zum Beispiel:

virtualenv --system-site-packages -p python mysite

Für Python 3.6 müssen Sie jedoch den Namen der ausführbaren Datei wie Python3.6 angeben

virtualenv --system-site-packages -p python3.6 mysite 

1
A. K.

Terminal öffnen und /Library/Frameworks/Python.framework/Versions/ eingeben

geben Sie dann ls /Library/Frameworks/Python.framework/Versions/2.7/bin/ ein, wenn Sie Python2 (oder andere) verwenden.

Bearbeiten Sie ~/.bash_profile und fügen Sie die folgende Zeile hinzu: export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/

cat ~/.bash_profile

In meinem Fall lautet der Inhalt von ~/.bash_profile wie folgt:

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

Nun sollte der Befehl virtualenv funktionieren.

0
hygull

Ich habe die folgenden Schritte ausgeführt, um Virtualenv zum Laufen zu bringen: 

Aktualisieren Sie virtualenv wie folgt: 

==> Sudo pip install --upgrade virtualenv

Python3 virtualenv initialisieren:

==> virtualenv -p python3 venv
0
Das

Ich hatte auch dieses Problem und versuchte die folgende Methode, die für mich funktionierte:

conda install virtualenv

virtualenv --system-site-packages /anaconda/envs/tensorflow (hier envs behält alle vom Benutzer erstellten virtuellen Umgebungen bei)

source /anaconda/envs/tensorflow/bin/activate

Ich hoffe es ist hilfreich.

0
Nicole

Ich hatte das gleiche Problem und ich kann bestätigen, dass das Problem mit einer veralteten virtualenv.py-Datei bestand. 

Es war nicht notwendig, ein komplettes install --upgrade durchzuführen. 

Es genügt, die virtualenv.py-Datei durch die neueste Version zu ersetzen. 

0
haxtar

Am OSX 10.6.8 leopard, nachdem ich zu Lion "aufgerüstet" hatte und dann wieder herabgestuft wurde (aua - VERMEIDEN!), Durchlief ich vor einigen Monaten die Methode Wolf Paulus , die Python völlig ignorierte. python 2.7 insgesamt gelöscht und durch 3.something "ersetzt". Mein FTP-Programm funktioniert nicht mehr (Fetch) und wer weiß, was sonst noch auf Python 2.7 angewiesen ist. An diesem Punkt habe ich die neueste Version von 2.7 von python.org heruntergeladen, und das Installationsprogramm brachte mich zum Laufen - bis ich versuchte, virtualenv zu verwenden.

Was anscheinend für mich funktioniert hat, war das Löschen von Python 2.7 mit diesem Code:

Sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7

entfernen Sie alle Links mit diesem Code: 

Sudo rm /usr/bin/pydoc
Sudo rm /usr/bin/python
Sudo rm /usr/bin/pythonw
Sudo rm /usr/bin/python-config

Ich hatte versucht, Python mit homebrew zu installieren, aber anscheinend wird es nicht funktionieren, wenn nicht alle XTools installiert sind, was ich bisher vermieden habe, da die Version von XTools, die mit 10.6 kompatibel ist, uralt ist und 4GB ist , die Sie hier bekommen können.

Also habe ich gerade den neuesten Download von python.org installiert.

Dann musste easy_install, pip, virtualenv neu installiert werden.

Ich frage mich auf jeden Fall, wann es Zeit für einen neuen Laptop sein wird, aber es gibt viel zu sagen, wenn man weniger Hardware-Teile (Sklavenarbeit, unethischer Bergbau usw.) kauft.

0
MikeiLL