Python kann nicht mit pyenv gewechselt werden

Lesezeit: 4 Minuten

Soma Suzukis Benutzeravatar
Soma Suzuki

Ich möchte verwenden pyenv um Python2 und Python3 zu wechseln.

Ich habe Python2, Python3 und Pyenv mit dem folgenden Code erfolgreich heruntergeladen.

brew install pyenv

brew install pyenv-virtualenv

pyenv install 2.7.10

pyenv install 3.5.0

Ich kann jedoch nicht von Python2 zu Python3 wechseln.

Soma-Suzuki:~ Soma$ python --version
Python 2.7.10
Soma-Suzuki:~ Soma$ pyenv global
2.7.10
Soma-Suzuki:~ Soma$ pyenv versions
  system
* 2.7.10 (set by /Users/Soma/.pyenv/version)
  3.5.0
Soma-Suzuki:~ Soma$ pyenv global 3.5.0
Soma-Suzuki:~ Soma$ pyenv global
3.5.0
Soma-Suzuki:~ Soma$ pyenv versions
  system
  2.7.10
* 3.5.0 (set by /Users/Soma/.pyenv/version)
Soma-Suzuki:~ Soma$ python --version
Python 2.7.10
Soma-Suzuki:~ Soma$ 

Ich verstehe nicht, warum das passiert.

Mein Python befindet sich in diesem Verzeichnis.

Soma-Suzuki:~ Soma$ which python
/usr/bin/python

  • Sie können einfach Ihre .bashrc-Datei bearbeiten. Machen Sie Alias ​​python=Python3.5.0

    – Anakin Tung

    25. Okt. 2015 um 4:17

  • @AnakinTung macht damit die ordnungsgemäße Versionskontrolle völlig zunichte.

    – RichieHH

    23. März 2021 um 8:08

  • Haben Sie eine „.python-version“-Datei in diesem Verzeichnis?

    – Dorian

    19. April 2022 um 20:36 Uhr

Benutzeravatar von untidyhair
unordentliches Haar

[July 2021]

Wenn diese Meldung beim Ausführen angezeigt wird eval "$(pyenv init -)"

WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.

Sie sollten die Nachricht von überprüfen pyenv init wie die Warnung sagt, aber kurz gesagt, Sie können verwenden eval "$(pyenv init --path)" stattdessen.

Und vergessen Sie nicht, Ihre Daten entsprechend zu aktualisieren ~/.bash_profile, ~/.zprofile, ~/.bashrc, ~/.zshrc o.ä. bei Bedarf.

  • Dies hat mein Problem unter Mac OS Catalina gelöst. Ich habe diese Warnung nicht erhalten und meine Python-Version wurde trotz der Aktualisierung nicht aktualisiert eval "$(pyenv init -)" in meinem .zshrc. Danke!

    – SocraticDatum

    12. Juli 2021 um 21:47 Uhr

  • Weder ich noch irgendjemand in der Klasse, die ich unterrichtete, bekam die Warnung, aber es war super frustrierend … Ich bin nicht glücklich, dass ich nie eine Mitteilung über diese Änderung gesehen habe.

    – fbenz

    5. Okt. 2021 um 14:54

  • Für macOS Big Sur (installiert über brew) benötigte ich (neben meinem vorhandenen eval "$(pyenv init -)" In .zshrc), um Folgendes hinzuzufügen .zprofile: eval "$(pyenv init --path)".

    – Raumfahrttechnik

    22. Okt. 2021 um 1:40


  • Was ist der Unterschied zwischen - Und --path?

    – liushuaikobe

    4. Januar 2022 um 8:19 Uhr

  • Wie ScrotumDave konnte ich auch bei Catalina keine Warnung generieren, aber das hat das Problem trotzdem behoben.

    – SexxLuthor

    16. Februar 2022 um 20:16 Uhr

Benutzeravatar von Diego Ubirajara
Diego Ubirajara

Versuche dies: eval "$(pyenv init -)"

Beispiel:

$ python -V
Python 2.7.9
mac:~ $ eval "$(pyenv init -)"
mac:~ $ python -V
Python 3.5.0

Mehr Info:
https://github.com/pyenv/pyenv

  • Gemäß der bereitgestellten Dokumentation, Ort eval "$(pyenv init -)" gegen Ende .bash_profile. Beachten Sie, dass es für mich wichtig ist, es zu platzieren .bashrc tat nicht arbeiten. (Die Dokumente warnen vor „seltsamem“ Verhalten, wenn .bashrc wird eingesetzt.)

    – Rico Picone

    3. September 2018 um 4:05

  • Betrieb eval "$(pyenv init -)" ändert das nicht python -V in meinem Fall, obwohl ich die Pyenv-Versionen installiert habe ~/.pyenv

    – Vadorequest

    25. Februar 2019 um 13:00 Uhr

  • ich habe gefehlt export PATH="$PYENV_ROOT/shims:$PATH" In .zshrc zusätzlich zu den export PATH="$PYENV_ROOT/bin:$PATH" Ich hatte konfiguriert

    – Vadorequest

    25. Februar 2019 um 13:06 Uhr

  • Wie Vadorequest sagte, müssen Sie, wenn pyenv mit Homebrew installiert wird, $PYENV_ROOT/shims zum Pfad hinzufügen, da $PYENV_ROOT/bin nicht existiert. Ich denke, das ist einzigartig bei Homebrew-Installationen von Pyenv.

    – Majorgear

    13. Juli 2021 um 20:44 Uhr

  • Ich weiß nicht warum, aber auf meinem System wurde $PYENV_ROOT nie definiert; hinzufügen export PATH="$(pyenv root)/shims:$PATH" zu meiner .zshrc-Datei hat funktioniert.

    – Was könnte

    13. September 2021 um 15:38 Uhr

Benutzer-Avatar von KZiovas
KZiovas

In Ubuntu die ~/.bashrc Die Datei muss aktualisiert und geändert werden eval "$(pyenv init -)" Zu eval "$(pyenv init --path)".

Bearbeiten: Ich möchte nur darauf hinweisen, dass die Änderung nach einem Neustart des Terminals wirksam wird. Wenn Sie das Terminal nicht neu starten möchten, können Sie auch einen zusätzlichen Schritt ausführen Zusätzlich zum Ändern der Datei. Führen Sie im Terminal denselben Befehl aus, den Sie in der Datei geändert haben: eval "$(pyenv init --path)"

  • Das war für mich auch auf MacOs die Lösung. Danke.

    – flix

    20. September 2021 um 6:27 Uhr

  • Dies ist die einzige Lösung, die bei mir funktioniert hat (Pop OS).

    – Skryvets

    30. März 2022 um 14:18 Uhr

  • Du bist mein Held!

    – Eitel Dagnin

    30. April 2022 um 8:06 Uhr

  • Bei mir funktioniert es auch unter MacOS wunderbar, vielen Dank 🙂

    – Fotocodes

    20. Juli 2022 um 14:07 Uhr


  • Ja. Neustart des Terminals – das ist etwas ganz anderes als der Neustart der gesamten Maschine. Vielen Dank für die Bearbeitung!

    – jsbueno

    21. Juli 2022 um 13:11 Uhr

Bobys Benutzeravatar
Boby

Bei mir hat das unter MacOS mit ZSH nach der Installation über Homebrew funktioniert:

echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

Ich hatte zunächst eval "$(pyenv init -)" in meinem Inneren ~/.zshrc Datei, aber das schien nicht zu funktionieren. Nachdem Sie dieser Anleitung gefolgt sind: https://github.com/pyenv/pyenv#basic-github-checkout Ich habe das entfernt eval Anruf von der .zshrc Datei und fügte sie der hinzu .zprofile Datei mit dem obigen Befehl und nach dem Neustart des Terminals hat alles funktioniert.

Benutzeravatar von alien_frog
alien_frog

Sie haben vergessen, dies hinzuzufügen eval "$(pyenv init -)".

Fügen Sie dies Ihrer .bash_profile- oder .bashrc-Datei (Mac <=10.14) oder Ihrer .zshrc-Datei (Mac 10.15+) hinzu.

  • Laut Dokumentation sollte es sich am Ende der Datei befinden

    – Jonathan

    18. Dezember 2017 um 21:47 Uhr

  • @Jonathan nicht anders

    – alien_frog

    18. Januar 2019 um 14:35 Uhr

  • Eingeben pyenv init im Terminal, um zu sehen, ob einige notwendige Änderungen vorgenommen werden müssen.

    – xemexpress

    26. Mai 2021 um 15:22 Uhr

  • @xemexpress, das ist nicht besonders hilfreich, für mich sagt es mir nur, ich solle „die README-Datei lesen“ … irgendwo …

    – Ken Williams

    18. Januar 2022 um 17:03 Uhr

Benutzeravatar von Powers
Befugnisse

Dies ist eine großartige Gelegenheit, mehr über die Funktionsweise von Pyenv zu erfahren.

Der pyenv global Der Befehl liest einfach die Daten in Ihrem /Users/Soma/.pyenv/version Verzeichnis. Es ist im Grunde dasselbe wie cat /Users/Soma/.pyenv/version.

Der pyenv versions Befehl ist gerecht Überprüfung durch die Hierarchie und Auswahl der richtigen Python-Version, die verwendet werden soll, wenn ein „shim interceptable“-Befehl wie folgt lautet python oder pip es läuft.

Wenn du rennst pyenv global 3.5.0Die /Users/Soma/.pyenv/version Die Datei wird aktualisiert und enthält nun „3.5.0“. Das ist die einzige Änderung, die pyenv vornimmt. Die meisten Benutzer sind darüber überrascht pyenv global 3.5.0 Ändert nur eine einzelne Zeile in einer Textdatei!

Wenn du rennst python --versionführt Ihr Terminal die gleichen Schritte aus, die es ausführt, wenn ein Shell-Befehl ausgeführt wird: Es durchläuft jedes Verzeichnis in Ihrem PATH und sucht nach der ersten ausführbaren Datei mit dem Namen python.

Wenn Sie tippen echo $PATHSie erhalten so etwas: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Ihre Maschine findet das python ausführbar in der /usr/bin Verzeichnis.

Sie können diesen Code zu Ihrem hinzufügen ~/.bash_profile Datei, um Ihren PFAD zu ändern.

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

Starten Sie Ihr Terminal neu und führen Sie es aus echo $PATH erneut, und Sie sehen nun eine Ausgabe wie diese: /Users/Soma/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Beachten Sie, wie die /Users/Soma/.pyenv/shims Das Verzeichnis befindet sich am Anfang des PATH Jetzt. Wenn du rennst python --version Jetzt wird der Befehl von verarbeitet python ausführbar in /Users/Soma/.pyenv/shims. Der Befehl wird keine Gelegenheit haben, von ihm übernommen zu werden /usr/bin/python weil es gepackt wird /Users/Soma/.pyenv/shims/python Erste.

Ich kann verstehen, warum dieser Fehler Sie verwirrt. Es ist schwierig, dies zu debuggen, wenn Sie es nicht wissen wie pyenv funktioniert.

  • Laut Dokumentation sollte es sich am Ende der Datei befinden

    – Jonathan

    18. Dezember 2017 um 21:47 Uhr

  • @Jonathan nicht anders

    – alien_frog

    18. Januar 2019 um 14:35 Uhr

  • Eingeben pyenv init im Terminal, um zu sehen, ob einige notwendige Änderungen vorgenommen werden müssen.

    – xemexpress

    26. Mai 2021 um 15:22 Uhr

  • @xemexpress, das ist nicht besonders hilfreich, für mich sagt es mir nur, ich solle „die README-Datei lesen“ … irgendwo …

    – Ken Williams

    18. Januar 2022 um 17:03 Uhr

Benutzeravatar von Joey Iglesias
Joey Iglesias

Ich hatte mit dem gleichen Problem auf einem Apple M1 MacBook Pro mit Monterey und installiertem Pyenv auf einem Rosetta-Emulationsterminal zu kämpfen.

Meine Lösung bestand darin, meiner ~/.zshrc-Datei Folgendes hinzuzufügen:

eval "$(pyenv init -)"
eval "$(pyenv init --path)"

Ich habe nichts zu ~/.zprofile hinzugefügt.

Ich kann jetzt sehen, wie die Versionen wie erwartet wechseln.

  • Nachdem ich beide Zeilen hinzugefügt hatte, funktionierte es, vorher habe ich nur die erste Zeile hinzugefügt. Auch das Problem mit meiner Konfiguration war, dass ich bekam /home/nikhil/.pyenv/plugins/pyenv-virtualenv/shims: Nur Virtualenv-Shims, aber KEINE PYENV-Shims, also nachdem ich diese zweite Zeile hinzugefügt habe, bekomme ich jetzt /home/nikhil/.pyenv/plugins/pyenv-virtualenv/shims:/home/nikhil/.pyenv/shims: PYENV SHIMS auch. Um diesen Standort zu erhalten, schreiben Sie echo $PATH. Auch die Antwort von @Powers hat mir geholfen

    – Nikhil Bhardwaj

    11. Januar 2022 um 17:31 Uhr

  • Danke, das hat mir bei meinem o-my-zsh-Terminal geholfen

    – Vasya Krenta vkrenta

    1. Februar 2022 um 15:12 Uhr

  • das hat bei mir auch funktioniert. MacBook M1, Brew, Ohmyzsh, ohne Virtualenv-Init, es funktionierte auch für den Versionswechsel und die Virtualenv-Einstellung. Danke!

    – Behinderung

    15. Februar 2022 um 12:06 Uhr

1450160cookie-checkPython kann nicht mit pyenv gewechselt werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy