Dobry i zły sposób, aby skonfigurować Python 3 Na MacOS

0 Comments

I”ve zanurzenie mój palec z powrotem do rozwoju Pythona, jak przygotować się do głowy do PyCon US. (Jeśli również tam zmierzasz i chcesz podzielić się swoją historią Pythona, daj mi znać!) Kiedy zainstalowałem moduł do majstrowania, otrzymałem przypomnienie, że muszę wkrótce zainstalować Pythona 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.

więc zrobiłem to, co każdy z nas by zrobił i googlowałem szukając przewodnika, aby zaktualizować moje środowisko programistyczne, które działa na komputerze Mac (system operacyjny macOS, dawniej znany jako OS X)., Ku mojemu zaskoczeniu znalazłem tylko garść postów StackOverflow i wskazali mi częściowe rozwiązania. Oto pełna historia konfiguracji środowiska bez niszczenia niczego wbudowanego w system operacyjny macOS.

1. Install pyenv

Moshe Zadka ostrzega, że zrobienie tego złego może spowodować nierzetelne wyobrażenie o tym, który Python jest uruchomiony, które zbyt ściśle zależy od aliasów wczytywanych przez powłoki. Wiedziałem, że Moshe zna Pythona, ale nie wiedziałem, że jest autorem wielu samouczków Pythona, a także nadchodzącej książki na temat rozwoju Pythona na macOS., Pomógł 40 kolegom w bezpiecznym i konsekwentnym rozwijaniu Pythona na systemach macOS zgodnie z jedną podstawową zasadą:

„Podstawowym założeniem całego rozwoju Pythona jest nigdy nie używać Pythona systemowego. Nie chcesz, aby w systemie Mac OS X „domyślny Python” był ” python3.”Nigdy nie zależy ci na domyślnym Pythonie.”

Jak przestać dbać o domyślny? Moshe zaleca używanie pyenv do zarządzania środowiskami Pythona (aby dowiedzieć się więcej o konfigurowaniu pyenv, zobacz ten artykuł)., To narzędzie zarządza wieloma wersjami Pythona i jest opisane jako ” proste, dyskretne i podąża za uniksową tradycją jednofunkcyjnych narzędzi, które robią jedną rzecz dobrze.”

chociaż dostępne są inne opcje instalacji, najprostszym sposobem na rozpoczęcie instalacji jest Homebrew:

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

zainstaluj Pythona

teraz zainstaluj najnowszą wersję Pythona (3.7.,3 w chwili pisania tego tekstu):

Ustaw swoją globalną domyślną

teraz, gdy Python 3 jest zainstalowany przez pyenv, chcemy ustawić go jako naszą globalną domyślną wersję dla środowisk pyenv:

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

moc pyenv pochodzi z jego kontroli nad ścieżką powłoki. Aby to działało poprawnie, musimy dodać następujące elementy do naszego pliku konfiguracyjnego (.zshrc dla mnie, możliwe .bash_profile dla Ciebie):

Po tej komendzie nasz dotfile (.zshrc dla zsh lub .,bash_profile dla Bash) powinny zawierać następujące linie:

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

teraz wiemy na pewno, że korzystamy z Pythona 3.7.3 i pip będzie aktualizować obok niego bez ręcznego aliasowania między wersjami. Korzystanie z rekomendacji Moshe ' a do korzystania z menedżera wersji (pyenv) pozwala nam łatwo akceptować przyszłe aktualizacje bez mylenia się co do tego, który Python uruchamiamy w danym momencie.

sukces

ponieważ czujesz się komfortowo z tym obiegiem pracy, możesz używać pyenv do zarządzania wieloma wersjami Pythona. Do zarządzania zależnościami niezbędne jest również korzystanie ze środowisk wirtualnych., W artykule wspomniałem o tym, jak korzystać z wbudowanej biblioteki venv, a Moshe poleca virtualenvwrapper do zarządzania środowiskami wirtualnymi.

zrozumienie środowiska uruchomieniowego Pythona

teraz, gdy masz naprawione wersje Pythona, można bezpiecznie zbadać, dlaczego ten problem myli tak wiele osób.

wersja Pythona, która jest dostarczana z systemem macOS, jest nieaktualna od wersji, którą Python zaleca używać do rozwoju. Zastanawianie się nad uruchomieniami Pythona może być czasem komicznym wyzwaniem, jak zauważa XKCD.,

Wielu użytkowników ma już na swoim komputerze dziesiątki interpreterów Pythona, ale nie mają pojęcia, jak nimi skutecznie zarządzać. Zbyt często ludzie po prostu pobierają najnowsze wydanie Pythona, przenoszą je na swoją ścieżkę i nazywają je dniem (lub używają brew install python3, który zrobiłby coś podobnego). Może to powodować pęknięcia w dół linii w frustrujący sposób, który może być trudny do rozwiązania.,

czego nie robić

moim pierwszym pomysłem na to, jak uczynić Pythona 3 domyślnym Pythonem w moim systemie było przeniesienie starej wersji i dodanie nowej:

wzorcem było to, co zwykle robi /usr/bin/ między głównymi wydaniami Pythona, ale szybko dowiedziałem się, że to był zły ruch:

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

na szczęście macOS chronił mnie przed złamaniem czegoś, czego Nie wiem.w pełni rozumiem. Dalsze badania dowodzą, że właśnie tego nie powinniśmy robić.

kolejna rzecz, aby nie próbować

teraz, gdy wiemy, czego nie robić, spójrzmy na to, co możemy zrobić., Istnieje kilka opcji, gdy myślimy o typowych schematach instalacji dla aplikacji na macOS.

użyj Pythona 3 jako domyślnego macOS

strona Pythona ma instalator macOS Python 3, który możemy pobrać i użyć. Jeśli użyjemy instalacji pakietu, wypełnienie python3 będzie dostępne w /usr / local / bin/.

Aliasing jest koniecznością, ponieważ plik binarny Pythona przechowywany w/usr/ bin / nie może być zmieniany. Fajne w aliasie jest to, że jest specyficzny dla naszej powłoki wiersza poleceń. Ponieważ używam zsh domyślnie, umieszczam w,plik zshrc:

Jeśli używasz domyślnej powłoki Bash, możesz dołączyć ten sam tekst do swojej .bashrc:

ta strategia działa, ale nie jest idealna do tworzenia przyszłych aktualizacji Pythona. Oznacza to, że musimy pamiętać, aby sprawdzić stronę internetową i pobrać nowe pliki, ponieważ Python nie zawiera sposobu aktualizacji wiersza poleceń.

mieć Homebrew Zarządzaj Pythonem 3

projekt Homebrew zapewnia darmowy i otwarty Menedżer pakietów dla macOS, na którym wielu ludzi polega. Daje użytkownikom Apple moc podobną do apt-get lub yum., Jeśli jesteś użytkownikiem Homebrew, być może masz już zainstalowany Python. Aby szybko sprawdzić, Uruchom:

$ brew list | grep python
python

Jeśli Python pojawi się pod komendą, jest zainstalowany. Jaka to wersja? Sprawdźmy:

ok, świetnie! Opiekunowie Homebrew zaktualizowali domyślną butelkę Pythona, aby wskazać najnowsze wydanie., Ponieważ opiekunowie Homebrew są bardziej niezawodni w aktualizowaniu wydania niż większość z nas, możemy użyć wersji Pythona 3 Homebrew za pomocą następującego polecenia:

teraz chcemy skierować nasz alias (z góry) na kopię Pythona, którą Homebrew zarządza:

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

aby upewnić się, że ścieżka powyżej wskazuje miejsce, w którym Homebrew Zainstalowaĺ 'Pythona w naszym Ĺ”rodowisku, moĹźemy uruchomiÄ ‡ brew info Python i szukaÄ ‡ informacji o Ĺ” cieĹźce.,

ta metoda, używając Homebrew do zarządzania naszym środowiskiem Pythona, jest dobrym punktem wyjścia i miała dla mnie wtedy sens.

A jeśli nadal potrzebujemy Pythona 2?

To ma sens dla każdego, kto jest nowy w Pythonie, aby zacząć od Pythona 3., Ale ci z nas, którzy nadal potrzebują Pythona 2—na przykład, aby przyczynić się do projektu Pythona, który jest dostępny tylko w Pythonie 2—mogą nadal używać domyślnej binarnej wersji Pythona macOS dostępnej w /usr/bin/python:

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

Homebrew jest tak wspaniały, że oferuje nawet inną formułę dla Pythona 2:

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

w każdej chwili możemy usunąć aliasy z naszego pliku konfiguracyjnego powłoki, aby wrócić do używania domyślnej kopii Pythona w systemie.

nie zapomnij zaktualizować Pipa do pip3!,

polecenie pip jest domyślnym menedżerem pakietów specjalnie dla pakietów Pythona. Chociaż zmieniliśmy nasze domyślne polecenie Pythona na wersję 3, musimy alias nasze polecenie pip oddzielnie, jeśli jest na poprzedniej wersji. Po pierwsze, musimy sprawdzić, na jakiej wersji jesteśmy:

aby upewnić się, że ponownie zainstalujemy pakiety zgodne z naszą nową wersją Pythona, użyjemy innego aliasu, aby wskazać kompatybilną wersję pip. Ponieważ używamy Homebrew jako naszego menedżera pakietów w tej sytuacji, wiemy, że zainstalowaliśmy pip3, gdy zainstalowaliśmy Pythona 3., Domyślna ścieżka powinna być taka sama jak w Pythonie 3, ale możemy to potwierdzić prosząc powłokę, aby ją znalazła:

$ which pip3
/usr/local/bin/pip3

teraz, gdy znamy lokalizację, dodamy ją do naszego pliku konfiguracyjnego powłoki, tak jak to zrobiliśmy wcześniej:

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

Ostatnio możemy potwierdzić, że uruchomienie pip wskazuje na pip3, otwierając nową powłokę lub przez Resetowanie naszej obecnej powłoki i zobaczenie na co zwracamy uwagę:

# 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

możemy uniknąć używania homebrew do aktualizacji Pipa, ale wymaga to znacznie dłuższego samouczka z dokumentacji Pythona.,

zrób to od samego początku

Jeśli dopiero zaczynasz pracę nad Pythonem w systemie macOS, wykonaj niezbędne konfiguracje, aby upewnić się, że używasz właściwej wersji Pythona od samego początku. Zainstalowanie Pythona 3, z Homebrew lub bez, i użycie aliasu pozwoli Ci zacząć kodowanie, ale to nie jest dobra strategia na dłuższą metę. Korzystanie z pyenv jako prostego rozwiązania do zarządzania wersjami, aby dobrze zacząć.

Ten artykuł został pierwotnie opublikowany w maju 2019 i został zaktualizowany przez redaktora.


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *