Hoe verander ik de standaard Python-versie?

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 python3je 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=python3doen 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 pythonpython3laten 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 uninstallals je een handmatige installatie hebt gedaan). Als je twee versies nodig hebt, configureer dan je $PATHvariabele 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 PATHin 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 $PATHop Linux en Mac). U kunt altijd een programma uitvoeren met het volledige pad, b.v. /usr/bin/🔳 some args, of cd /usr/binen dan ./🔳 some args(vervang blanco door de ‘echo’ programma dat ik hierboven heb genoemd), maar voor het overige heeft het typen van 🔳 some argsgeen betekenis zonder de PATHenv-variabele die de mappen aangeeft waarvan we impliciet bestanden kunnen zoeken-en-uitvoeren van ( als /usr/binniet in PATHstond, dan zou er 🔳: command not foundstaan. Het eerste overeenkomende commando in de eerste directory is het commando dat wordt uitgevoerd (het whichcommando 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/pythonwat 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.pathvan de sys-module of de omgevingsvariabele PYTHONPATHingesteld 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.2kunnen 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 [email protected] -> 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 [email protected] -> 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 [email protected] -> 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 [email protected] -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 [email protected] -> 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 [email protected] -> 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 [email protected] -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 [email protected] -> 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 [email protected] -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 [email protected] -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 [email protected] -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 [email protected] -> 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 [email protected] -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 [email protected] -> 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 -Vin, het toont waarschijnlijk:

Python 2.7.10

-Ten tweede invoer python3 -V, het toont waarschijnlijk:

Python 3.7.2

–Voer ten derde in where pythonof which python, het toont waarschijnlijk:

/usr/bin/python

—Voer ten vierde in where python3of 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_profileonder Bash of ~/.zshrconder zsh.

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

OF

alias python=python3

-Zesde voer source ~/.bash_profilein onder Bash of source ~/.zshrconder zsh.

–Seventhly Sluit de terminal af.

—Achtste Open uw terminal, en voer python -Vin. Het toont waarschijnlijk:

Python 3.7.2

Ik heb het met succes geprobeerd.

Anderen, het ~/.bash_profileonder 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 python3typt 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 python2.x is. Dit werkt ongeacht de plaats waar u systemof execbelt.


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…

Other episodes