Rett og feil måte å sette opp Python 3 på MacOS
jeg»har vært dyppe min tå tilbake i Python utvikling som jeg får klar til å dra til PyCon OSS. (Hvis du»re headed det så godt, og ønsker å dele din Python historien, gi meg beskjed!) Når jeg installerte en modul for å tinker rundt med, jeg fikk en påminnelse om at jeg trengte å installere Python 3 snart.
$ 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 hva enhver av oss ville gjøre, og googlet rundt på jakt etter en guide til å oppdatere min utvikling miljø, som kjører på Mac-en (den macOS operativsystem, tidligere kjent som OS X)., Til min overraskelse fant jeg bare en håndfull av StackOverflow innlegg, og de henviste meg til delvis løsninger. Her»er den fulle historien om hvordan å sette opp miljøet uten å bryte noe som er innebygd i mac os-operativsystemet.
1. Installere pyenv
Moshe Zadka forsiktig at du gjør dette feil kan resultere i en upålitelig idé som Python kjører som avhenger også tett på skjell legge aliaser. Jeg visste Moshe ble kjent med Python, men hva jeg didn»t vet er at han er en forfatter av mange Python tutorials, samt en kommende bok om Python utvikling på macOS., Han hjalp 40 kolleger utvikle Python trygt og konsekvent på macOS systemer følge en av grunnpilarene:
«Den grunnleggende forutsetningen av alle Python utvikling er å aldri bruke systemet Python. Du ikke vil at Mac OS X «standard Python» å være «python3.»Du vil aldri bekymre om standard Python.»
Hvordan gjør vi slutter å bry oss om standard? Moshe anbefaler å bruke pyenv å administrere Python miljøer (for en dypere dykk om hvordan du konfigurerer pyenv, se denne artikkelen)., Dette verktøyet forvalter flere versjoner av Python og er beskrevet som «enkel, diskret, og følger Unix-tradisjon av single-purpose verktøy som gjør én ting bra.»
Mens andre installasjon alternativer er tilgjengelig, er den enkleste måten å komme i gang er med Homebrew:
$ brew install pyenv
🍺 /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB
Installere Python
Nå la»s installere den nyeste Python versjon (3.7.,3 når dette skrives):
Angi dine global standard
Nå som Python 3 er installert gjennom pyenv, ønsker vi å sette det som vår globale standard versjon for pyenv miljøer:
$ pyenv global 3.7.3
# and verify it worked
$ pyenv version
3.7.3 (set by /Users/mbbroberg/.pyenv/version)
The power of pyenv kommer fra sin kontroll over våre shell»s bane. For at det skal fungere riktig, må vi legge følgende til vår konfigurasjon-fil (.zshrc for meg, muligens .bash_profile for deg):
Etter at kommando, vår dotfile (.zshrc for zsh eller .,bash_profile for Bash) bør inkludere disse linjene:
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
Nå vet vi for visst at vi»på nytt ved hjelp av Python 3.7.3 og pip vil oppdatere siden det uten noen manuell aliasing mellom versjoner. Ved hjelp av Moshe»s anbefaling om å bruke en versjon manager (pyenv) gjør oss i stand til enkelt å godta fremtidige oppgraderinger uten å bli forvirret om hvilken Python vi kjører på et gitt tidspunkt.
Suksess
Så får du komfortabel med dette arbeidsflyt, kan du bruke pyenv til å administrere flere versjoner av Python. Det er også viktig, for avhengighet management, for å bruke virtuelle miljøer., Jeg nevne hvordan å bruke den innebygde venv bibliotek i artikkelen, og Moshe anbefaler virtualenvwrapper for å administrere virtuelle miljøer.
Forstå Python-kjøretidsfiler
Nå som du har din Python versjoner fast, det er trygt å utforske hvorfor dette problemet forvirrer så mange mennesker.
Den versjonen av Python som følger med mac os er godt ut på dato fra hva Python anbefaler å bruke for utvikling. Grunnet Python-kjøretidsfiler kan være komisk utfordrende til tider, slik det fremgår av XKCD.,
Mange brukere har dusinvis av Python tolker på sin datamaskin allerede, men har ingen anelse om hvordan å håndtere dem effektivt. Altfor ofte, folk bare laste ned den nyeste Python løsne, flytte den til sin vei, og kaller det en dag (eller bruk brygge installere python3, noe som ville gjøre noe lignende). Dette kan føre til brekkasje ned linjen i frustrerende måter som kan være vanskelig å feilsøke.,
Hva IKKE å gjøre
Min første idé om hvordan å gjøre Python 3 standard Python på systemet mitt var å flytte den gamle versjonen, og legg til det nye:
mønsteret som følges hva /usr/bin/ vanligvis ikke mellom store utgivelser av Python, men jeg lærte raskt at det var feil flytte:
$ sudo mv /usr/bin/python /usr/bin/python2
mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted
Heldigvis, macOS beskyttet meg fra å bryte noe jeg don»t fullt ut forstår. Videre forskning beviser dette er akkurat hva vi bør»t gjøre.
en Annen ting ikke å prøve
Nå som vi vet hva du ikke skal gjøre, la»s titt på hva vi kunne gjøre., Det er et par alternativer når vi tenker på vanlig installasjon mønstre for programmer på macOS.
Bruke Python 3 som macOS standard
Python»s nettside har en macOS Python 3 installer vi kan laste ned og bruke. Hvis vi bruker pakken installasjon, en python3 fylle vil være tilgjengelig i /usr/local/bin/.
Aliasing er et must siden Python binære lagret i /usr/bin/ kan»t bli endret. Hva»s fint om et alias er at det er spesifikke for vår kommandolinjeskall. Siden jeg bruker zsh standard, jeg legger følgende til .,zshrc file:
Hvis du bruker standard Bash-skallet, kan du legge til denne teksten din .bashrc:
Denne strategien fungerer, men det er»t ideell for fremtidige oppdateringer til Python. Det betyr at vi må huske å sjekke nettstedet og laste ned nye filer siden Python doesn»t inkluderer en kommando-linje måte å oppdatere.
Har Homebrew administrere Python 3
Homebrew prosjektet gir en fri og åpen kildekode-pakken manager for mac os at mange mennesker er avhengige av. Det gir Apple-brukere er en kraft lik apt-get eller yum., Hvis du er en Homebrew bruker, kan det hende du allerede har Python installert. Kontroller raskt, kjører du:
$ brew list | grep python
python
Hvis Python viser opp under kommando, det er installert. Hvilken versjon er det? Let ‘ s merk:
Greit, flott! Homebrew utviklere har oppdatert standard Python flaske til å peke til den siste versjonen., Siden Homebrew vedlikeholdspersonell er mer pålitelig på å oppdatere utgivelsen enn de fleste av oss, kan vi bruke Homebrew»s versjon av Python 3 med følgende kommando:
Nå ønsker vi å peke våre alias (ovenfra) til kopi av Python at Homebrew klarer:
# If you added the previous alias, use a text editor to update the line to the following
alias python=/usr/local/bin/python3
for Å sørge for at veien over peker til hvor Homebrew installert Python i våre omgivelser, vi kan kjøre brygge info python og se om banen informasjon.,
Denne metoden, for å bruke Homebrew til å håndtere våre Python miljø, er et godt utgangspunkt, og det gjøres fornuftig for meg på den tiden.
Hva om vi fortsatt trenger Python 2?
Det er fornuftig for alle som er nye til Python til å begynne med Python-3., Men de av oss som fortsatt trenger Python 2—for eksempel, for å bidra til en Python-prosjektet det»er bare tilgjengelig i Python 2—kan fortsette å bruke standard macOS Python binære tilgjengelig i /usr/bin/python:
$ /usr/bin/python
>>> print("This runtime still works!")
This runtime still works!
Homebrew er så fantastisk, det tilbyr også en annen formel for Python 2:
# If you need Homebrew"s Python 2.7 run
$ brew install python@2
Når som helst, vi kan ta aliaser fra våre shell»s konfigurasjon-fil for å gå tilbake til å bruke standard kopi av Python på systemet.
Don»t glem å oppdatere pip til pip3!,
pip-kommandoen er standard pakke manager spesielt for Python-pakker. Selv om vi har endret våre standard Python-kommandoen til å være versjon 3, har vi å alias våre pip kommando separat hvis det er på den forrige versjonen. Først må vi sjekke hvilken versjon vi»re på:
for Å sikre at vi»re installere pakker som er kompatible med vår nye versjon av Python, vi vil bruke en annen alias til å peke til den versjonen som er kompatibel med pip. Siden vi»re bruk av Homebrew som vår pakke leder i denne situasjonen, vet vi at det er installert pip3 når vi installert Python-3., Standard banen skal være den samme som Python 3, men vi kan bekrefte dette ved å spørre shell for å finne det:
$ which pip3
/usr/local/bin/pip3
Nå som vi vet sted, og vi vil legge den til vår shell konfigurasjonsfilen, som vi gjorde før:
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
# or for Bash
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
Siste, vi kan bekrefte at kjører pip poeng å pip3 ved å åpne et nytt skall eller ved å tilbakestille vår nåværende shell og se hva vi peker 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 unngå å bruke Homebrew å oppdatere pip, men det krever en mye lengre veiledning fra Python dokumentasjon.,
Gjør det riktig fra starten
Hvis du er bare komme i gang med Python utvikling på en macOS, gjør de nødvendige konfigurasjonene for å sikre at du»re bruker riktig versjon av Python fra start. Installere Python 3, med eller uten Homebrew, og ved hjelp av alias vil la deg starte koding, men det er ikke en god strategi for det lange løp. Ved hjelp av pyenv som en enkel versjon management-løsning for å gi deg en god start.
Denne artikkelen ble opprinnelig publisert i Mai 2019 og har blitt oppdatert av redaktøren.