Ik heb Python 3.2 op mijn Mac geïnstalleerd. Nadat ik /Applications/Python 3.2/Update Shell Profile.commandheb uitgevoerd, is het verwarrend dat wanneer ik Python -Vtyp in Terminal, er staat dat Python 2.6.1 .
Hoe kan ik de standaard Python-versie wijzigen?
Antwoord 1, autoriteit 100%
(Ongeacht of u Mac, Linux of Windows gebruikt:)
Dit is wenselijk voor achterwaartse compatibiliteit(hoewel technisch gezien Python niet eens achterwaartse compatibiliteit tussen kleinere versies garandeert).
Python3 echtverbreekt achterwaartse compatibiliteit, en programma’s die ‘python
‘ aanroepen verwachten python2. Je hebt veel programma’s en scripts (waar je niet eens van op de hoogte bent) die python
=python2 verwachten, en als je dit wijzigt, zouden die programma’s en scripts kapot gaan. Dit was een zeer berekende beslissing van de mensen die python schrijven en verpakken.
Het antwoord dat je zoekt is: Je moet dit niet veranderen.
Als je niet zeker weet hoe je de nieuwste versie van python moet starten, is het op de meeste platforms zo dat python3
je python2
-installatie intact laat (vanwege om de bovenstaande compatibiliteitsredenen); dus je kunt python3 starten met de opdracht python3
.
Shell-alias:
Je zou echter een aangepaste alias in je shell kunnen maken. De manier waarop u dit doet, hangt af van de shell, maar misschien kunt u alias py=python3
doen en het in uw shell-opstartbestand plaatsen. Dit werkt alleen op uw lokale computer (zoals het hoort), en is enigszins onnodig in vergelijking met het gewoon uittypen (tenzij u het commando constant aanroept).
Verwarde gebruikers moeten niet proberen aliassen of virtuele omgevingen of iets dergelijks te creëren die python
python3
laten uitvoeren; dit is een slechte vorm.
Verschillende 3.* versies, of 2.* versies:
In het uiterst onwaarschijnlijke geval dat als iemand op deze vraag komt met twee python3-versies, b.v. 3.1 vs 3.2, en je bent in de war dat je op de een of andere manier twee versies van python hebt geïnstalleerd, dit is mogelijk omdat je handmatige en/of handmatige installaties hebt gedaan. Je kunt de standaard pakket-/programmainstallatie-/verwijder-/beheerfaciliteiten van je besturingssysteem gebruiken om dingen op te sporen, en misschien (tenzij je ontwikkelingswerk doet dat verrassend genoeg wordt beïnvloed door de paar achterwaarts incompatibele wijzigingen tussen kleine versies) de oude versie verwijderen ( of doe make uninstall
als je een handmatige installatie hebt gedaan). Als je twee versies nodig hebt, configureer dan je $PATH
variabele opnieuw zodat de ‘standaard’ versie die je wilt vooraan staat; of als je de meeste Linux-distributies gebruikt, is de opdracht die je zoekt sudo update-alternatives
. Zorg ervoor dat alle programma’s die u uitvoert en die toegang tot de oudere versies nodig hebben, correct kunnen worden aangeroepen door hun aanroepende omgeving of shell (door de var PATH
in die omgeving in te stellen).
sidenote: om wat dieper in te gaan op PATH: de gebruikelijke manieren waarop programma’s worden geselecteerd is via de omgevingsvariabele PATH
(echo $PATH
op Linux en Mac). U kunt altijd een programma uitvoeren met het volledige pad, b.v. /usr/bin/🔳 some args
, of cd /usr/bin
en dan ./🔳 some args
(vervang blanco door de ‘echo’ programma dat ik hierboven heb genoemd), maar voor het overige heeft het typen van 🔳 some args
geen betekenis zonder de PATH
env-variabele die de mappen aangeeft waarvan we impliciet bestanden kunnen zoeken-en-uitvoeren van ( als /usr/bin
niet in PATH
stond, dan zou er 🔳: command not found
staan. Het eerste overeenkomende commando in de eerste directory is het commando dat wordt uitgevoerd (het which
commando op Linux en Mac zal je vertellen welk subpad dit is). Meestal is het (bijvoorbeeld op Linux, maar vergelijkbaar op Mac) iets als /usr/bin/python
wat een symbolische link is naar andere symbolische links naar de definitieve versie ergens, bijvoorbeeld:
% echo $PATH
/usr/sbin:/usr/local/bin:/usr/sbin:usr/local/bin:/usr/bin:/bin
% which python
/usr/bin/python
% which python2
/usr/bin/python2
% ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 Mar 4 2019 /usr/bin/python -> python2*
% ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9 Mar 4 2019 /usr/bin/python2 -> python2.7*
% ls -l /usr/bin/python2.7
-rwxr-xr-x 1 root root 3689352 Oct 10 2019 /usr/bin/python2.7*
% which python3
/usr/bin/python3
% ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Mar 26 2019 /usr/bin/python3 -> python3.7*
% ls -l /usr/bin/python3.7
-rwxr-xr-x 2 root root 4877888 Apr 2 2019 /usr/bin/python3.7*
% ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 7 Mar 4 2019 /usr/bin/python -> python2*
lrwxrwxrwx 1 root root 9 Mar 4 2019 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3689352 Oct 10 2019 /usr/bin/python2.7*
lrwxrwxrwx 1 root root 9 Mar 26 2019 /usr/bin/python3 -> python3.7*
-rwxr-xr-x 2 root root 4877888 Apr 2 2019 /usr/bin/python3.7*
lrwxrwxrwx 1 root root 33 Apr 2 2019 /usr/bin/python3.7-config -> x86_64-linux-gnu-python3.7-config*
-rwxr-xr-x 2 root root 4877888 Apr 2 2019 /usr/bin/python3.7m*
lrwxrwxrwx 1 root root 34 Apr 2 2019 /usr/bin/python3.7m-config -> x86_64-linux-gnu-python3.7m-config*
lrwxrwxrwx 1 root root 16 Mar 26 2019 /usr/bin/python3-config -> python3.7-config*
lrwxrwxrwx 1 root root 10 Mar 26 2019 /usr/bin/python3m -> python3.7m*
lrwxrwxrwx 1 root root 17 Mar 26 2019 /usr/bin/python3m-config -> python3.7m-config*
sidenote2: (In het zeldzamere geval roept een python-programma een subprogramma op met de module subprocess
, om aan te geven welk programma moet worden uitgevoerd, kan men de paden van subprocessen wijzigen met sys.path
van de sys-module of de omgevingsvariabele PYTHONPATH
ingesteld op de ouder, of het volledige pad specificeren… maar aangezien het pad wordt overgenomen door onderliggende processen, is dit in de verste verte geen probleem .)
Antwoord 2, autoriteit 58%
Controleer de locatie van python 3
$ which python3
/usr/local/bin/python3
Schrijf alias in bash_profile
vi ~/.bash_profile
alias python='/usr/local/bin/python3'
Bash_profile opnieuw laden
source ~/.bash_profile
Bevestig python-opdracht
$ python --version
Python 3.6.5
Antwoord 3, autoriteit 32%
Op Mac OS X met het python.org-installatieprogramma zoals je blijkbaar hebt, moet je Python 3 aanroepen met python3
, niet python
. Dat is momenteel gereserveerd voor Python 2-versies. Je zou ook python3.2
kunnen gebruiken om die versie specifiek aan te roepen.
$ 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*
Als je ook een Python 2 van python.org hebt geïnstalleerd, zou deze een vergelijkbare framework-bin-map hebben zonder overlappende bestandsnamen (behalve 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*
Antwoord 4, autoriteit 30%
Oude vraag, maar als alternatief:
virtualenv --python=python3.5 .venv
source .venv/bin/activate
Antwoord 5, autoriteit 17%
Doe de juiste dingen, doe de dingen goed!
—>Zero Open uw terminal,
–Voer eerst python -V
in, het toont waarschijnlijk:
Python 2.7.10
-Ten tweede invoer python3 -V
, het toont waarschijnlijk:
Python 3.7.2
–Voer ten derde in where python
of which python
, het toont waarschijnlijk:
/usr/bin/python
—Voer ten vierde in where python3
of which python3
, het toont waarschijnlijk:
/usr/local/bin/python3
–Voeg ten vijfde de volgende regel toe onderaan uw PATH-omgevingsvariabelenbestand in ~/.profile file or ~/.bash_profile
onder Bash of ~/.zshrc
onder zsh.
alias python='/usr/local/bin/python3'
OF
alias python=python3
-Zesde voer source ~/.bash_profile
in onder Bash of source ~/.zshrc
onder zsh.
–Seventhly Sluit de terminal af.
—Achtste Open uw terminal, en voer python -V
in. Het toont waarschijnlijk:
Python 3.7.2
Ik heb het met succes geprobeerd.
Anderen, het ~/.bash_profile
onder zsh is niet dat ~/.bash_profile
.
De PATH-omgevingsvariabele onder zsh in plaats daarvan ~/.profile
(of ~/.bash_file
) via ~/.zshrc
.
Help jullie!
Antwoord 6, autoriteit 12%
Verander de “standaard” Python door deze voor de systeem Python op uw pad te plaatsen, bijvoorbeeld:
export PATH=/usr/local/bin:$PATH
Antwoord 7, autoriteit 6%
Stel Python 3.5 in met een hogere prioriteit
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
Controleer het resultaat
sudo update-alternatives --config python
python -V
Antwoord 8, autoriteit 3%
Controleer het uitvoeringspad van python3 waar het bibliotheken heeft
$ which python3
/usr/local/bin/python3 some OS might have /usr/bin/python3
open het bash_profile-bestand en voeg een alias toe
vi ~/.bash_profile
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'
Herlaad bash_profile om wijzigingen door te voeren
source ~/.bash_profile
Voer het python-commando uit en controleer of het wordt geladen met python3
$ python --version
Python 3.6.5
Antwoord 9
Volgens een snelle Google-zoekopdracht is deze update alleen van toepassing op de huidige shell die je hebt geopend. Het kan waarschijnlijk worden opgelost door python3 te typen, omdat mac en linux voldoende vergelijkbaar zijn om dit soort dingen samen te laten vallen. Link naar het resultaat van Google Zoeken.
Ook, zoals ninjagecko al zei, zijn de meeste programma’s nog niet geüpdatet naar 3.x, dus het hebben van de standaard python als 3.x zou veel python-scripts die in applicaties worden gebruikt breken.
Antwoord 10
Ik gebruik OS X 10.7.5 en Python 3.4.2. Als u python3
typt en wat u wilt uitvoeren, wordt het uitgevoerd met python 3. Bijvoorbeeld
pyhton3 test001.py
. Dat draaide een testprogramma dat ik maakte genaamd test001. Ik hoop dat dit helpt.
Antwoord 11
je kunt tijdelijk wisselen of wisselen tussen verschillende versies met de volgende commando’s:
set path=C:\Users\Shaina\AppData\Local\Programs\Python\Python35-32;%PATH%
python --version
Antwoord 12
Navigeer naar:
Mijn computer -> Eigenschappen -> Geavanceerd -> Omgevingsvariabelen -> Systeemvariabelen
Stel dat u python 2.7 al had toegevoegd in padvariabele en u wilt het standaardpad wijzigen in python 3.x
voeg vervolgens het pad van de python3.5.x-map toe voor het python2.7-pad.
open cmd: typ “python –version”
python-versie wordt gewijzigd in python 3.5.x
Antwoord 13
Kortom: verander het pad in Omgevingsvariabelen!
Voor Windows:
-
Geavanceerde
System Settings > Advance (tab)
. Onderaan vind je'Environment Variables'
-
Dubbelklik op het
Path
. Je ziet het pad naar een van de python-installaties, verander dat in het pad van je gewenste versie.
Antwoord 14
In mijn geval, op mijn Mac OSX, met Python 2.7.18 geïnstalleerd via mac-poorten, kon ik de python-versie instellen op 2.7 met:
$ sudo port select --set python python27
Dus:
$ python -V
Python 2.7.18
Antwoord 15
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python
Dit zal scripts breken, maar het is precies de manier om python te veranderen. Je moet ook de scripts herschrijven om niet aan te nemen dat python
2.x is. Dit werkt ongeacht de plaats waar u system
of exec
belt.
Antwoord 16
Na het installeren van de nieuwere versie van python op uw computer…
Als u een python-programma (bijv. ‘program.py’) wilt starten vanaf de terminal (met de nieuwste versie van python op uw systeem); in plaats van ‘python program.py’ uit te voeren, voer je ‘python3 program.py’
uit
Evenzo, als u python in de terminal wilt gebruiken (met de nieuwste versie van python op uw systeem), voert u ‘python3’uit in plaats van ‘python’
Probeer als test ‘python3 –v’ in de terminal uit te voeren…