Den rigtige og forkerte måde at oprette Python 3 på MacOS

0 Comments

Jeg har dyppet min tå tilbage i Python-udvikling, da jeg gør mig klar til at gå til PyCon os. (Hvis du ” re ledes der så godt og ønsker at dele din Python historie, Lad mig vide!) Da jeg installerede et modul til at tinker rundt med, fik jeg en påmindelse om, at jeg snart skulle installere Python 3.

$ pip install todoist-python
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won"t be maintained after that date. A future version of pip will drop support for Python 2.7.

så jeg gjorde, hvad nogen af os ville gøre, og googlede rundt på udkig efter en guide til at opdatere mit udviklingsmiljø, der kører på Mac (macOS-operativsystemet, tidligere kendt som OS.)., Til min overraskelse fandt jeg kun en håndfuld Stackoverflo. – indlæg, og de pegede mig på delvise løsninger. Her er den fulde historie om, hvordan du opretter dit miljø uden at bryde noget indbygget i macOS-operativsystemet.

1. Installer pyenv

Moshe Mosadka advarer om, at det at gøre dette forkert kan resultere i en upålidelig ID.om, hvilken Python kører, der afhænger for tæt på skaller, der indlæser aliaser. Jeg vidste Moshe var bekendt med Python, men hvad jeg didn”t vide, er, at han er en forfatter til mange Python tutorials samt en kommende bog om Python udvikling på macOS., Han hjalp med 40 kolleger udvikle Python sikkert og konsekvent på macOS systemer efter et centralt princip:

“Den grundlæggende forudsætning for alt Python udvikling er at aldrig bruge systemet Python. Du ønsker ikke, at Mac OS. “standard Python” skal være “python3.”Du vil aldrig bekymre dig om standard Python.”

hvordan stopper vi med at bekymre os om standard? Moshe anbefaler at bruge pyenv til at styre Python-miljøer (for en dybere dykke på konfiguration pyenv, se denne artikel)., Dette værktøj administrerer flere versioner af Python og beskrives som “enkel, diskret, og følger Uni.tradition for single-purpose værktøjer, der gør welln ting godt.”

Mens andre anlæg muligheder er til rådighed, er den nemmeste måde at komme i gang med Homebrew:

$ brew install pyenv
🍺 /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB

Installer Python

Nu let ‘ s installere den nyeste Python version (3.7.,3 som dette skrives):

Indstil din global standard

Nu, at Python 3 er installeret via pyenv, vi ønsker at sætte det som vores global standard version til pyenv miljøer:

$ pyenv global 3.7.3
# and verify it worked
$ pyenv version
3.7.3 (set by /Users/mbbroberg/.pyenv/version)

Den magt pyenv kommer fra dens kontrol over vores shell”s vej. For at det skal fungere korrekt, skal vi tilføje følgende til vores konfigurationsfil (.possiblyshrc for mig, muligvis .bash_profile for dig):

efter denne kommando, vores dotfile (.zshrc tilshsh eller .,bash_profile for Bash) bør omfatte disse linjer:

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

Nu ved vi med sikkerhed, at vi”re brug af Python 3.7.3 og pip vil opdatere sammen med det uden nogen manuel aliasing mellem versioner. Brug Moshe ” s anbefaling at bruge en version manager (pyenv) gør det muligt for os nemt at acceptere fremtidige opgraderinger uden at blive forvirret om, hvilken Python vi kører på et givet tidspunkt.

succes

da du bliver fortrolig med denne arbejdsgang, kan du bruge pyenv til at administrere flere versioner af Python. Det er også vigtigt,for afhængighed ledelse, at bruge virtuelle miljøer., Jeg nævner, hvordan du bruger det indbyggede venv-bibliotek i artiklen, og Moshe anbefaler virtualenv .rapper til styring af virtuelle miljøer.

Forståelse Python runtime

Nu, hvor du har dine Python-versioner fast, det er sikkert at undersøge, hvorfor dette problem forvirrer så mange mennesker.

den version af Python, der leveres med macOS, er godt forældet fra, hvad Python anbefaler at bruge til udvikling. Overvejelse af Python runtimes kan til tider være komisk udfordrende, som bemærket af .kcd.,mange brugere har allerede snesevis af Python-tolke på deres computer, men har ingen ID.om, hvordan de skal håndtere dem effektivt. Alt for ofte, folk bare hente den nyeste Python udgivelse, flytte den til deres vej, og kalder det en dag (eller bruge bryg installere python3, som ville gøre noget lignende). Dette kan forårsage brud på linjen på frustrerende måder, der kan være vanskelige at fejlfinde.,

Hvad man IKKE skal gøre

Min første idé om, hvordan at gøre Python 3-standard Python på mit system, var at flytte den gamle version og tilføje den nye:

Det mønster, der blev fulgt på, hvad /usr/bin/ normalt ikke mellem større udgivelser af Python, men jeg lærte hurtigt, at det var den forkerte vej:

$ sudo mv /usr/bin/python /usr/bin/python2
mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted

Heldigvis, macOS beskyttede mig fra at bryde noget, jeg don”t fuldt ud forstår. Yderligere forskning viser, at dette er præcis, hvad vi shouldn ” t gøre.

en anden ting ikke at prøve

nu hvor vi ved, hvad vi ikke skal gøre, lad”s se på, hvad vi kunne gøre., Der er et par muligheder, når vi tænker på almindelige installationsmønstre til applikationer på macOS.

brug Python 3 som macOS-standard

Python”s websiteebsted har et macOS Python 3-installationsprogram, vi kan do .nloade og bruge. Hvis vi bruger pakkeinstallationen, vil en python3-udfyldning være tilgængelig i / usr/local/bin/.Aliasing er et must, da Python binære gemt i / usr/ bin / kan”t ændres. Hvad er rart om et alias er, at det er specifikke for vores kommandolinje shell. Da jeg brugershsh som standard, sætter jeg følgende i .,zshrc fil:

Hvis du bruger standard Bash shell, kan du tilføje den samme tekst til din .bashrc:

denne strategi fungerer, men den er ikke ideel til fremtidige opdateringer af Python. Det betyder, at vi er nødt til at huske at tjekke hjemmesiden og hente de nye filer, da Python gør ikke”t omfatter en kommando-line måde at opdatere.

få Homebre.til at administrere Python 3

Homebre. – projektet leverer en gratis og open source-pakkehåndtering til macOS, som mange mennesker er afhængige af. Det giver Apple-brugere en effekt svarende til apt-get eller yum., Hvis du er en Homebre. – bruger, har du muligvis allerede Python installeret. For hurtigt at kontrollere, Kør:

$ brew list | grep python
python

Hvis Python dukker op under kommandoen, er det installeret. Hvilken version er det? Lad ” s check:

Okay, fantastisk! Homebre. – vedligeholderne har opdateret standard Python-flasken for at pege på den seneste udgivelse., Da Homebrew vedligeholdere er mere pålidelig på at opdatere udgave end de fleste af os, kan vi bruge Homebrew”s version af Python 3 med følgende kommando:

Nu, vi ønsker at vise vores alias (fra ovenfor) til den kopi af Python, der Homebrew administrerer:

# If you added the previous alias, use a text editor to update the line to the following
alias python=/usr/local/bin/python3

for At sikre den sti ovenstående punkter, hvor Homebrew installeret Python i vores miljø, kan vi køre bryg info python og se efter stien oplysninger.,

denne metode til at bruge Homebre.til at styre vores Python-miljø er et godt udgangspunkt, og det gav mening for mig på det tidspunkt.

hvad hvis vi stadig har brug for Python 2?

det giver mening for alle nye til Python til at begynde med Python 3., Men de af os, der stadig har brug for Python 2—for eksempel, at bidrage til en Python-projekt, der”er kun tilgængelige i Python 2—kan fortsætte med at bruge standard macOS Python binære tilgængelig i /usr/bin/python:

$ /usr/bin/python
>>> print("This runtime still works!")
This runtime still works!

Homebrew er så vidunderligt, det tilbyder også en anden formel for Python 2:

# If you need Homebrew"s Python 2.7 run
$ brew install python@2

Til enhver tid, kan vi fjerne den aliaser fra vores shell”s konfigurationsfil for at gå tilbage til at bruge standard kopi af Python på systemet.

glem ikke at opdatere pip til pip3!,

pip-kommandoen er standardpakkehåndteringen specifikt til Python-pakker. Selv om vi har ændret vores standard Python kommando til at være version 3, Vi er nødt til alias vores pip kommando separat, hvis det”s på den tidligere version. For det første skal vi kontrollere, hvilken version vi er på:

for at sikre, at vi”geninstallerer pakker, der er kompatible med vores nye version af Python, bruger vi et andet alias til at pege på den kompatible version af pip. Da vi ” re bruger Homebre.som vores pakke manager i denne situation, vi ved, det installeret pip3 når vi installerede Python 3., Standard sti bør være den samme som Python 3, men vi kan bekræfte dette ved at spørge shell til at finde det:

$ which pip3
/usr/local/bin/pip3

Nu, som vi kender den placering, vi vil føje det til vores shell-konfigurationsfilen, som vi gjorde før:

$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
# or for Bash
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc

Sidste, vi kan bekræfte, at der kører pip point til pip3 ved at åbne en ny shell, eller ved at nulstille vores nuværende shell og se, hvad vi peger på:

# This command reloads the current shell without exiting the session
# Alternatively, exit the shell and start a new one
$ exec $0
# Now we can look to see where pip points us
$ which pip
pip: aliased to /usr/local/bin/pip3

Vi kan undgå at bruge Homebrew at opdatere pip, men det kræver en meget længere tutorial fra Python dokumentation.,

gør det lige fra starten

Hvis du lige er kommet i gang med Python-udvikling på en macOS, skal du udføre de nødvendige konfigurationer for at sikre dig, at du”bruger den rigtige version af Python fra starten. Installation Python 3, med eller uden Homebre., og bruge alias vil lade dig starte kodning, men det”s ikke en god strategi for det lange løb. Brug pyenv som en simpel version management løsning til at få dig ud til en god start.

denne artikel blev oprindeligt offentliggjort i maj 2019 og er blevet opdateret af redaktøren.


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *