Ich habe kürzlich eine Reihe von Punktedateien auf meinem Mac zusammen mit einigen anderen Anwendungen installiert (ich habe zu iTerm anstelle von Terminal und Sublime als Standardtexteditor gewechselt), aber seitdem funktionieren alle meine virtuellen Umgebungen nicht mehr, obwohl sich ihre Ordner in .virtualenvs befinden sind immer noch da und geben den folgenden Fehler aus, wenn ich versuche, etwas in ihnen auszuführen:
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/[user]/.virtualenvs/modclass/bin/python
Reason: image not found
Trace/BPT trap: 5
Ich habe alle Dateien im Zusammenhang mit Punktedateien entfernt und mein .bash_profile auf den vorherigen Stand zurückgesetzt, aber das Problem besteht weiterhin. Gibt es eine Möglichkeit, das Problem zu diagnostizieren oder auf einfache Weise zu lösen (z. B. müssen nicht alle virtuellen Umgebungen erneut erstellt werden)?
rmvirtualenv
funktioniert immer noch, aber wennmkvirtualenv
ich versuche auszuführen , erhalte ich den folgenden Fehler:-bash: /usr/local/bin/virtualenv: /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/Resour: bad interpreter: No such file or directory
Es scheint also ein Problem mit meinen Python-Pfaden zu sein, aber ich kann nicht sehen, wo das Problem liegt, da ich Python ausführen kann und es in Ordnung zu sein scheint.virtualenv
Befehle jetzt theoretisch funktionieren, aber da es ein Problem mit Python gibt, tun sie nichts. Das eigentliche Problem liegt also bei Brew's Python. Und ich habe den Verdacht, dass der Grund in einer Namensänderung in Python-Verzeichnissen liegt. Aus irgendeinem Grund suchen alle diese Befehle nach Python im Ordner,/usr/local/Cellar/python/2.7.6
aber der Name des Ordners lautet tatsächlich/usr/local/Cellar/python/2.7.6_1
.2.7.6_1
zu2.7.6
. Im schlimmsten Fall können Sie es wieder umbenennen.Antworten:
Ich habe hier die Lösung für das Problem gefunden , daher geht der gesamte Kredit an den Autor.
Das Wesentliche ist, dass beim Erstellen einer virtuellen Umgebung viele Symlinks zum von Homebrew installierten Python erstellt werden.
Hier ist ein Beispiel:
Wenn Sie Python mit Homebrew aktualisieren und dann ausführen
brew cleanup
, verweisen die Symlinks in der virtuellen Umgebung auf Pfade, die nicht mehr vorhanden sind (weil Homebrew sie gelöscht hat).Die Symlinks müssen auf das neu installierte Python verweisen:
Die Lösung besteht darin, die Symlinks in der virtuellen Umgebung zu entfernen und sie dann neu zu erstellen:
Es ist wahrscheinlich am besten zu überprüfen, welche Links zuerst gelöscht werden, bevor Sie sie löschen:
Meiner Meinung nach ist es sogar noch besser, nur defekte Symlinks zu löschen. Sie können dies mit GNU tun
find
:Sie können GNU
find
mit Homebrew installieren, wenn Sie es noch nicht haben:Beachten Sie, dass GNU-Programmen, die mit Homebrew installiert wurden, standardmäßig der Buchstabe vorangestellt wird
g
. Dies soll verhindern, dass diefind
mit OS X gelieferte Binärdatei beschattet wird.quelle
gfind
war perfekt, da ich viele ungebrochene Symlinks (z. B. Nodeenv) hatte, die ich nicht löschen wolltefind -L ~/.virtualenvs/my-virtual-env/ -type l | xargs rm
pip3 freeze dyld: lazy symbol binding failed: Symbol not found: __Py_UnixMain
virtualenv ~/.virtualenvs/foo -p python2
, sonst wird Python 3 verwendet.Nachdem ich ein paar Dinge ausprobiert hatte, funktionierte dies für mich:
Wechseln Sie in Ihr virtualenv-Verzeichnis (führen Sie Workon jedoch nicht aus):
Löschen Sie nun diese Dateien:
Führen Sie dann Folgendes aus, um Ihr Venv wieder aufzubauen:
Sie sollten nun wieder eine Liste Ihrer installierten Pakete sehen.
quelle
pipenv --rm
und neu erstellenpipenv shell
,pipenv install
Dies geschah, als ich von Snow Leopard auf Mac OS X Mavericks aktualisiert habe. Ich musste das Gebräu auch vorher neu installieren. Hoffentlich haben Sie den Befehl freeze für Ihr Projekt mit pip ausgeführt.
Zum Auflösen müssen Sie die Pfade aktualisieren, auf die die virtuelle Umgebung verweist.
brew install python
pip install --upgrade virtualenvwrapper
rmvirtualenv old_project
mkvirtualenv new_project
workon new_project
pip install -r requirements.txt
Dies sollte das Projekt so lassen, wie es vorher war.
quelle
Die
@Chris Wedgwood
Antwort einer Update-Version zum Speichernsite-packages
(Pakete bleiben installiert)quelle
Es scheint, dass der richtige Weg, um dieses Problem zu beheben, darin besteht, es auszuführen
nachdem Sie Python mit Homebrew aktualisiert haben.
Dies sollte eine allgemeine Prozedur für jede Formel sein, die etwas wie Python installiert, das über ein eigenes Paketverwaltungssystem verfügt. Wenn Sie installieren
brew install python
, installieren Siepython
undpip
undeasy_install
undvirtualenv
und so weiter. Wenn diese Tools selbst aktualisiert werden können, versuchen Sie dies am besten, bevor Sie sich an Homebrew als Ursache für Probleme wenden.quelle
virtualenv .
in meiner kaputten virtuellen Umgebung. Die aktualisierte Version von hatvirtualenv
dann die notwendigen Abhängigkeiten neu erstellt und ich konnte loslegen. Dieser Prozess war selbstverwalteter und robuster als die für mich akzeptierte Antwort.Wenn dies durch ein
brew upgrade
Upgrade des Python verursacht wurde und Sie ein Downgrade auf die vorherige Version durchführen können, versuchen Sie esbrew switch python [previous version]
zbrew switch python 3.6.5
. Von hier.quelle
Anweisungen für virtualenvwrapper
Wie in der akzeptierten Antwort angegeben, ist die Hauptursache wahrscheinlich ein Homebrew-Update, das bedeutet, dass Ihre virtuellen Symlinks auf fehlerhafte Python-Pfade verweisen - siehe Details hier .
Für jede virtuelle Umgebung müssen Sie die Symlinks neu zuweisen, um auf den richtigen Python-Pfad (im Brühkeller) zu zeigen. Hier erfahren Sie, wie Sie dies mit virtualenvwrapper tun . Hier aktualisiere ich eine virtuelle Umgebung namens "my-example-env".
Alles erledigt.
quelle
Jeder, der pipenv verwendet (und Sie sollten!), Kann einfach diese beiden Befehle verwenden - ohne dass venv aktiviert ist:
quelle
pipenv --rm
im Ordner Ihrer Umgebung verwenden und dannpipenv install --dev
Wenn Sie Python3 kaputt gemacht haben, versuchen Sie es einfach und beheben Sie
brew upgrade python3
es für mich.quelle
Ich habe mich kürzlich damit konfrontiert. Keine der oben genannten Lösungen hat bei mir funktioniert. Es scheint nicht wirklich Pythons Problem zu sein. Beim Ausführen
aws s3 ls
wurde der folgende Fehler angezeigt:
dyld: Library not loaded: @executable_path/../.Python
Dies bedeutet, dass die
aws
ausführbare Bibliothek, auf die verwiesen wird, entweder nicht vorhanden oder beschädigt ist. Daher habe ich dieaws-cli
Anweisungen über diesen Link deinstalliert und neu installiert und es hat funktioniert !!quelle
Das Problem für mich (einen MacOS-Benutzer) ist, dass
brew
die Python- und Virtualenvs-Links auf die alte Version aktualisiert wurden, die gelöscht wurde.Wir können es überprüfen und beheben, indem wir
quelle
Ich hatte ein ähnliches Problem und habe es gelöst, indem ich einfach die virtuelle Umgebung mit neu erstellt habe
virtualenv .
quelle
Verwenden von Python 2.7.10.
Ein einziger Befehl
virtualenv path-to-env
macht es. Dokumentationquelle
Ich hatte eine kaputte virtuelle Umgebung aufgrund einer Homebrew-Neuinstallation von Python (dadurch defekte Symlinks) und auch ein paar "sudo pip install" s, die ich zuvor gemacht hatte. Die Tipps von Weizhong waren sehr hilfreich bei der Behebung der Probleme, ohne dass Pakete neu installiert werden mussten. Ich musste auch Folgendes für das Problem mit gemischten Berechtigungen tun.
sudo chown -R my_username lib / python2.7 / site-packages
quelle
Virtualenvs sind kaputt. Manchmal ist es einfach, venv-Ordner zu löschen und virutalenvs neu zu erstellen.
quelle
Wenn Sie pipenv verwenden, wird
pipenv --rm
das Problem durch einfaches Ausführen gelöst.quelle
Ich hatte das gleiche Problem, nachdem ich Brew auf meinem OSX Catalina aktualisiert hatte.
Nachdem ich ein paar Sachen ausprobiert habe, finde ich, dass das Folgende die beste und einfachste Lösung ist.
Löschen Sie zunächst die virtuelle Umgebung. (Optional)
Erstellen Sie dann eine neue virtuelle Umgebung
Referenz: https://www.jeremycade.com/python/osx/homebrew/2015/03/02/fixing-virtualenv-after-a-python-upgrade/
quelle
Die akzeptierte Antwort funktioniert bei mir nicht: Die Datei
$WORKON_HOME/*/bin/python2.7
ist kein Symlink mehr, sondern eine vollwertige ausführbare Datei:Die Lösung besteht leider darin, alle virtuellen Umgebungen vollständig zu entfernen und von Grund auf neu zu erstellen .
Als Referenz:
quelle
--always-copy
Argument, um es zu überschreiben. Zumindest das, was ich aus dem Benutzerhandbuch--always-copy
und ich habe reguläre Dateien :-(Das einfache Upgrade von python3 hat bei mir funktioniert:
quelle
Ich habe die besten Methoden ausprobiert, aber sie haben für mich nicht funktioniert, da sie versucht haben, Tox zum Funktionieren zu bringen. Was schließlich funktionierte, war:
auch wenn tox schon installiert war. Die Ausgabe endete mit:
quelle
Was es für mich behoben hat, war nur die Deinstallation von Python3 und Pipenv und die Neuinstallation.
quelle
Alle Antworten sind hier großartig. Ich habe einige der oben genannten Lösungen von Ryan, Chris ausprobiert und konnte das Problem nicht lösen. Deshalb musste ich schnell und schmutzig vorgehen.
rm -rf <project dir>
(odermv <project dir> <backup projct dir>
wenn Sie ein Backup behalten möchten)git clone <project git url>
Nichts Neues hier, aber es macht das Leben leichter!
quelle
Ich bin mir sicher, dass ich zu spät zur Party komme, aber ich möchte sagen, dass die Lösung dieses Problems viel einfacher ist als hier diskutiert.
Sie können die virtuelle Umgebung einfach neu generieren, ohne etwas löschen / bearbeiten zu müssen. Angenommen, Ihre kaputte Umgebung wird aufgerufen
env_to_fix
, können Sie nur Folgendes tun:Dadurch werden die Links neu generiert und die Umgebung repariert, ohne dass der aktuelle Status irgendwo gespeichert und wiederhergestellt werden muss.
quelle
Ich bin auf dasselbe Problem gestoßen, als ich auf meinem Mac auf meine Python-Laufzeit von 2 bis 3 zeigte und den Alias Python auf den Python 3-Pfad zeigte. Anschließend erstelle ich eine neue virtuelle Umgebung und installiere die für mein Projekt erforderlichen Pakete erneut. Für meinen Anwendungsfall hatte ich ein Python-Programm, das auf Google Sheet schrieb. Bereinigen Sie einige Pakete, die sich von der Python 2-Implementierung unterscheiden, und wa la, die Dinge fingen wieder an zu funktionieren.
quelle