Modul corect și greșit de a configura Python 3 pe MacOS

0 Comments

mi-am scufundat degetul înapoi în dezvoltarea Python, în timp ce mă pregătesc să mă îndrept spre PyCon US. (Dacă vă îndreptați și acolo și doriți să vă împărtășiți povestea Python, anunțați-mă!) Când am instalat un modul în care să se joace cu, Am primit un memento că am nevoie pentru a instala Python 3 în curând.deci, am făcut ceea ce ar face oricare dintre noi și am căutat pe Google un ghid pentru actualizarea mediului meu de dezvoltare, care rulează pe Mac (sistemul de operare macOS, cunoscut anterior ca OS X)., Spre surprinderea mea, am găsit doar o mână de posturi StackOverflow, și mi-au indicat soluții parțiale. Iată povestea completă a modului de configurare a mediului dvs. fără a rupe nimic încorporat în sistemul de operare macOS.

1. Instalați pyenv

Moshe Zadka avertizează că face acest lucru greșit ar putea duce la o încredere în ideea de Python care rulează și care depinde prea strâns pe coji de încărcare pseudonime. Știam că Moshe era familiarizat cu Python, dar ceea ce nu știam este că el este un autor al multor tutoriale Python, precum și o carte viitoare despre dezvoltarea Python pe macOS., El a ajutat la 40 de colegii dezvolta Python în condiții de siguranță și în mod constant pe macOS sisteme urma un principiu de bază:

„premisa De bază a tuturor dezvoltare Python este să nu folosiți sistemul de Python. Nu doriți ca Mac OS X „Python implicit” să fie ” python3.”Vrei să nu-ți pese niciodată de Python implicit.”

cum nu ne mai pasă de implicit? Moshe recomandă utilizarea pyenv pentru a gestiona mediile Python (pentru o scufundare mai profundă la configurarea pyenv, vezi acest articol)., Acest instrument gestionează mai multe versiuni de Python și este descris ca fiind „simplu, discret și urmează tradiția Unix a instrumentelor cu un singur scop care fac un lucru bine.”

în Timp ce alte opțiuni de instalare sunt disponibile, cel mai simplu mod de a începe este cu Homebrew:

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

Install Python

Acum să”s a instala cea mai recentă versiunea Python (3.7.,3 ca din acest scris):

Set implicit la nivel global

Acum, că Python 3 este instalat prin pyenv, vrem să-l setați ca noastre globale default versiune pentru pyenv medii:

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

putere de pyenv vine din controlul asupra noastră shell”e calea. Pentru ca acesta să funcționeze corect, trebuie să adăugăm următoarele la fișierul nostru de configurare (.zshrc pentru mine, eventual .bash_profile pentru tine):

după această comandă, dotfile nostru (.zshrc pentru zsh sau .,bash_profile pentru Bash) ar trebui să includă aceste linii:

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

Acum știm sigur că ne”re folosind Python 3.7.3 și pip va actualiza alături de ea fără orice manual de aliasing între versiuni. Utilizarea recomandării lui Moshe de a folosi un manager de versiuni (pyenv) ne permite să acceptăm cu ușurință upgrade-uri viitoare fără a ne confunda cu privire la ce Python rulăm la un moment dat.pe măsură ce vă simțiți confortabil cu acest flux de lucru, puteți utiliza pyenv pentru a gestiona mai multe versiuni de Python. De asemenea, este esențial, pentru gestionarea dependenței, utilizarea mediilor virtuale., Menționez modul de utilizare a Bibliotecii venv construite în articol, iar Moshe recomandă virtualenvwrapper pentru gestionarea mediilor virtuale.

înțelegerea Runtimes Python

acum, că aveți versiunile Python fix, este sigur de a explora de ce această problemă confundă atât de mulți oameni.

Versiunea de Python care este livrată cu macOS este mult depășită de ceea ce Python recomandă utilizarea pentru dezvoltare. Pondering Runtimes Python poate fi comic provocator uneori, după cum sa menționat de către XKCD.,mulți utilizatori au deja zeci de interpreți Python pe computerul lor, dar habar nu au cum să-i gestioneze eficient. Prea des, oamenii descarcă cea mai recentă versiune Python, o mută în calea lor și o numesc o zi (sau folosesc brew install python3, care ar face ceva similar). Acest lucru poate provoca defalcări pe linie în moduri frustrante care pot fi dificil de depanat.,

Ce să NU facă

prima Mea idee cu privire la modul de a face Python 3 implicit Python pe sistemul meu a fost să se mute versiunea veche și se adaugă unul nou:

model de urmat ce /usr/bin/ de obicei între principalele versiuni de Python, dar am învățat repede că era o mișcare greșită:

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

din Fericire, macOS m-a protejat de rupere ceva I don”t înțelege pe deplin. Cercetările ulterioare demonstrează că acest lucru este exact ceea ce nu ar trebui să facem.

un alt lucru să nu încercați

acum că știm ce să nu facem, să ne uităm la ce am putea face., Există câteva opțiuni atunci când ne gândim la modele comune de instalare pentru aplicații pe macOS.

utilizați Python 3 ca implicit macOS

site-ul Python are un program de instalare macOS Python 3 pe care îl putem descărca și utiliza. Dacă folosim instalarea pachetului, o umplere python3 va fi disponibilă în /usr/local/bin/.Aliasing este o necesitate, deoarece binarul Python stocat în / usr/ bin / nu poate fi schimbat. Ce e frumos despre un alias este că este specific pentru shell-ul nostru de linie de comandă. Din moment ce am folosi zsh în mod implicit, am pus următoarele în .,fișier zshrc:

Dacă utilizați shell-ul Bash implicit, puteți adăuga același text la dvs.bashrc:

această strategie funcționează, dar nu este ideală pentru a face actualizări viitoare la Python. Înseamnă că trebuie să ne amintim să verificăm site-ul web și să descărcăm noile fișiere, deoarece Python nu include o modalitate de actualizare a liniei de comandă.

au Homebrew gestiona Python 3

proiectul Homebrew oferă un manager de pachete gratuit și open source pentru macOS pe care mulți oameni se bazează. Oferă utilizatorilor Apple o putere similară cu apt-get sau yum., Dacă sunteți utilizator Homebrew, este posibil să aveți deja Python instalat. Pentru a verifica rapid, executați:

$ brew list | grep python
python

dacă Python apare sub comandă, este instalat. Ce versiune este? Să verificăm:

bine, minunat! Administratorii Homebrew au actualizat sticla Python implicită pentru a indica cea mai recentă versiune., Deoarece Homebrew administratori sunt mai de încredere la actualizarea de presă decât majoritatea dintre noi, putem folosi Homebrew”versiunea de Python 3 cu următoarea comandă:

Acum vrem să alias (de mai sus) la copia de Python care Homebrew gestionează:

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

Pentru a asigurați-vă că punctele de mai sus pentru a în cazul în care Homebrew instalat Python în mediul nostru, putem rula prepara info python și să caute calea de informații.,

această metodă, de a folosi Homebrew pentru a gestiona mediul nostru Python, este un bun punct de plecare, și a avut sens pentru mine la momentul respectiv.

ce se întâmplă dacă mai avem nevoie de Python 2?

are sens pentru oricine nou în Python să înceapă cu Python 3., Dar cei dintre noi care mai au nevoie de Python 2—de exemplu, pentru a contribui la un proiect Python care”e disponibil numai în Python 2—puteți continua să utilizați implicit macOS Python binar disponibil in /usr/bin/python:

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

Homebrew este atât de minunat, este chiar vă oferă o formulă diferită pentru Python 2:

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

În orice moment, putem elimina pseudonime din coajă nostru”s fișier de configurare pentru a reveni la utilizarea implicite de copiere de Python pe sistemul.

nu uitați să actualizați pip la pip3!,

comanda pip este managerul de pachete implicit special pentru pachetele Python. Deși am schimbat comanda noastră Python implicită pentru a fi versiunea 3, trebuie să alias comanda noastră PIP separat dacă este pe versiunea anterioară. Mai întâi, trebuie să verificăm la ce versiune suntem:

pentru a ne asigura că instalăm pachete compatibile cu noua noastră versiune de Python, vom folosi un alt alias pentru a indica versiunea compatibilă a pip. Din moment ce folosim Homebrew ca manager de pachete în această situație, știm că a instalat pip3 când am instalat Python 3., Calea implicită ar trebui să fie la fel ca Python 3, dar putem confirma acest lucru, cerându-shell pentru a găsi:

$ which pip3
/usr/local/bin/pip3

Acum, că știm locația, vom adăuga la shell fișier de configurare, cum am făcut-o înainte:

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

Ultimul, putem confirma că rulează pip puncte pentru a pip3 prin deschiderea unui nou shell sau prin resetarea nostru shell-ul curent și a vedea ceea ce avem punctul a:

# 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

putem evita folosind Homebrew pentru a actualiza pip, dar care necesită o mult mai mult tutorialul de la Pitonul de documentare.,

fă-o chiar de la început

dacă abia ai început dezvoltarea Python pe un macOS, fă configurațiile necesare pentru a te asigura că folosești versiunea corectă de Python încă de la început. Instalarea Python 3, cu sau fără Homebrew și utilizarea alias vă va permite să începeți să codificați, dar nu este o strategie bună pe termen lung. Folosind pyenv ca o soluție simplă de gestionare a versiunilor pentru a vă oferi un început bun.acest articol a fost publicat inițial în Mai 2019 și a fost actualizat de editor.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *