jak zmienić domyślną wersję Pythona?

107

Zainstalowałem Pythona 3.2 na moim komputerze Mac. Po uruchomieniu / Applications / Python 3.2 / Update Shell Profile.command jest mylące, że kiedy wpisuję python -V w Terminalu , pojawia się komunikat , że Python 2.6.1 , jak mogę zmienić domyślną wersję Pythona?

Zhu Shengqi
źródło
Związane z: stackoverflow.com/a/18425592/939986
Santosh Kumar
Zobacz opensource.com/article/19/5/python-3-default-mac, aby uzyskać fajne rozwiązanie z wykorzystaniem pyenv.
Thomas Ahle

Odpowiedzi:

115

Jest to prawdopodobnie pożądane ze względu na wsteczną kompatybilność.

Python3 łamie wsteczną kompatybilność, a programy wywołujące „python” prawdopodobnie oczekują python2. Prawdopodobnie masz wiele programów i skryptów, których nawet nie jesteś świadomy, a które oczekują python = python2, a zmiana tego spowodowałaby uszkodzenie tych programów i skryptów.

Odpowiedź, której prawdopodobnie szukasz, brzmi: Nie powinieneś tego zmieniać .

Możesz jednak utworzyć niestandardowy alias w swojej powłoce. Sposób, w jaki to zrobisz, zależy od powłoki, ale być może możesz to zrobićalias py=python3

Jeśli mylić o tym, jak uruchomić najnowszą wersję Pythona, to przynajmniej przypadek na Linux, który python3opuszcza swoją python2instalację w stanie nienaruszonym (z powodu powyższych względów zgodności) ; w ten sposób możesz uruchomić Python3 python3poleceniem.

ninjagecko
źródło
36
Jest to pomocna informacja, ale pytanie brzmiało „jak mogę zmienić domyślną wersję Pythona”. Czy możemy dodać coś, co pomoże ludziom próbującym to zrobić?
dmeyerson,
Na Macu zainstalowanie Python3 pozostawia również Python2 w stanie nienaruszonym. Wydaje mi się jednak, że istnieje sposób na zmianę wartości domyślnej, która jest uruchamiana po wpisaniu samego słowa „python”. Kiedyś trafiłem na tę opcję. Zdecydowałem się pozostawić to tak, jak jest, gdzie „python --version” pokazuje 2.7.12, a „python3 --version” pokazuje 3.7.0. Zgadzam się z powyższym dmeyersonem, że pytanie brzmi, jak to zmienić. Twoja rada jest dobra, ale jest sposób, aby ją zmienić, jeśli musisz (lub naprawdę, naprawdę chcesz).
Rich Sadowsky
3
> Odpowiedź, której prawdopodobnie szukasz, brzmi: Nie powinieneś tego zmieniać. I tutaj pomyślałem, że to „jak to zmienić”!
duane
2
Ta odpowiedź jest poprawna. Nie zmieniaj pythonpunktów na poziomie systemu, ponieważ możesz zepsuć ważne komponenty systemu operacyjnego, jeśli to zrobisz . Zamiast tego użyj oddzielnej instalacji Pythona 3 i virtualen, aby nadać sobie „lokalny” domyślny język Python.
Martijn Pieters
52

Sprawdź lokalizację Pythona 3

$ which python3
/usr/local/bin/python3

Wpisz alias w bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Załaduj ponownie bash_profile

source ~/.bash_profile

Potwierdź polecenie Pythona

$ python --version
Python 3.6.5
Ryosuke Hujisawa
źródło
2
to jest złe rozwiązanie. Jak wspomniano w zaakceptowanej odpowiedzi, $ pythonjest zarezerwowany dla języka Python 2. Każdy program uruchamiany na komputerze, który oczekuje języka Python 2, otrzyma następnie python 3 z powodu aliasu, co może mieć nieprzewidziane negatywne konsekwencje.
Shonin
Zamiary Apple są nieistotne dla pytania.
duane
45

W systemie Mac OS X przy użyciu instalatora python.org, jak najwyraźniej masz, musisz wywołać Python 3 za pomocą python3, a nie python. To jest obecnie zarezerwowane dla wersji Pythona 2. Możesz również użyć python3.2do wywołania tej wersji.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Jeśli zainstalowałeś również Python 2 z python.org, miałby on podobny katalog bin frameworka bez nakładających się nazw plików (z wyjątkiem 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Ned Deily
źródło
Jeśli chodzi o „obecnie zarezerwowane dla wersji Pythona 2”, czy masz do tego link?
Wildcard
Jeśli mam python 3.4 i python 3.7, kiedy piszę python3 z terminala, wykonuje on python 3.4, a nie 3.7, jak to naprawić?
Ysh,
32

Stare pytanie, ale alternatywnie:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
źródło
jasne, ale jeśli nie masz pliku wykonywalnego (np. python3.5) to rozwiązanie nie działa.
Afshin Mehrabani
Myślę, że to obejmuje ten stackoverflow.com/questions/5506110/ ...
FreshPow
20

Rób dobrze, rób to dobrze!

---> Zero Otwórz terminal,

- Pierwsze wejście python -V, prawdopodobnie pokazuje:

Python 2.7.10

-Po drugie wejście python3 -V, prawdopodobnie pokazuje:

Python 3.7.2

- Po trzecie wejście where pythonlub which python, prawdopodobnie pokazuje:

/usr/bin/python

--- Po czwarte wejście where python3lub which python3, prawdopodobnie pokazuje:

/usr/local/bin/python3

- Po piąte dodaj następujący wiersz na dole pliku zmiennej środowiskowej PATH w ~/.profile file or ~/.bash_profileobszarze Bash lub ~/.zshrcw zsh.

alias python='/usr/local/bin/python3'

LUB

alias python=python3

-Po szóste wejście source ~/.bash_profilepod Bash lub source ~/.zshrcpod zsh.

- Po siódme Wyjdź z terminalu.

--- Ósme Otwórz terminal i wprowadź python -V, prawdopodobnie pokazuje:

Python 3.7.2

Udało mi się spróbować.

Inni, ~/.bash_profilepod zsh to nie to ~/.bash_profile.

Zamiast tego zmienna środowiskowa PATH w zsh ~/.profile(lub ~/.bash_file) via ~/.zshrc.

Pomóżcie!

McAllister Bowman
źródło
16

Zmień „domyślny” język Python, umieszczając go na swojej ścieżce przed systemem Python, na przykład:

export PATH=/usr/local/bin:$PATH
Adam Vandenberg
źródło
Zakładam, że robiąc to, możesz coś zepsuć na Macu. Ponieważ istnieje wiele programów i skryptów, które używają aliasu „python”. Jeśli nagle, z powodu zmiany priorytetu w PATH, zaczną wskazywać na Python3, a nie Python2 - może to coś zepsuć. Potencjalnie cały system operacyjny ... takie jest moje założenie i nie testowałem.
Aivoric
3
Każde oprogramowanie systemowe korzystałoby z pełnej ścieżki do dostarczonego przez system języka Python.
Adam Vandenberg
2

Zgodnie z szybkim wyszukiwaniem w Google ta aktualizacja dotyczy tylko bieżącej otwartej powłoki. Prawdopodobnie można to naprawić, wpisując python3, ponieważ mac i linux są na tyle podobne, że takie rzeczy się pokrywają. Link do wyniku wyszukiwania Google.

Ponadto, jak stwierdził ninjagecko, większość programów nie została jeszcze zaktualizowana do wersji 3.x, więc posiadanie domyślnego języka Python w wersji 3.x zepsułoby wiele skryptów Pythona używanych w aplikacjach.

Matt Habel
źródło
2

Używam OS X 10.7.5 i Python 3.4.2. Jeśli wpiszesz python3i co chcesz uruchomić, uruchomi to za pomocą Pythona 3. Na przykład pyhton3 test001.py. To uruchomił program testowy, który stworzyłem o nazwie test001. Mam nadzieję, że to pomoże.

ITGM
źródło
5
Witamy w Stack Overflow! Wygląda na to, że Twoja odpowiedź nie jest prawdziwą odpowiedzią na zadane pytanie. Jeśli chcesz to naprawić, odwiedź stackoverflow.com/help/how-to-answer, aby uzyskać pomoc.
Inne
Spędziłem GODZINY próbując zmusić Pythona3 do pracy na moim Macu - okazało się, że wpisanie „python3” zamiast starego „python” załatwiło sprawę.
YCode
1

Nawigować do:

Mój komputer -> Właściwości -> Zaawansowane -> Zmienne środowiskowe -> Zmienne systemowe

Załóżmy, że masz już python 2.7 dodany w zmiennej path i chcesz zmienić domyślną ścieżkę na python 3.x

następnie dodaj ścieżkę folderu python3.5.x przed ścieżką python2.7.

otwórz cmd: wpisz „python --version”

Wersja pythona zostanie zmieniona na python 3.5.x

Ankit Agrawal
źródło
3
To jest Windows.
Charles Ross
Niektóre IDE, które zawierają terminale / cmds / consoles, propagują zmienne środowiskowe. Uruchom ponownie IDE, aby uzyskać zmiany w terminalu embedd.
UselesssCat
0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

To zepsuje skrypty, ale jest dokładnie sposobem na zmianę Pythona. Powinieneś także przepisać skrypty, aby nie zakładały, że pythonjest to 2.x. To zadziała niezależnie od miejsca, w którym dzwonisz systemlub exec.

duane
źródło
0

W skrócie: zmień ścieżkę w zmiennych środowiskowych!

Dla Windowsa:

  • Zaawansowane System Settings > Advance (tab). Na dole znajdziesz'Environment Variables'

  • Kliknij dwukrotnie plik Path. Zobaczysz ścieżkę do jednej z instalacji Pythona, zmień ją na ścieżkę żądanej wersji.

amalik2205
źródło
0

Sprawdź ścieżkę wykonywania python3, w którym znajdują się biblioteki

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

otwórz plik bash_profile i dodaj alias

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Załaduj ponownie bash_profile, aby zmiany zaczęły obowiązywać

source ~/.bash_profile

Uruchom polecenie python i sprawdź, czy ładuje się za pomocą python3

$ python --version
Python 3.6.5
Javeed Shakeel
źródło
0

możesz zmienić tymczasowo lub przełączać się między różnymi wersjami za pomocą następujących poleceń:

set path=C:\Users\Shaina\AppData\Local\Programs\Python\Python35-32;%PATH%
python --version

wprowadź opis obrazu tutaj

Shaina Raza
źródło