article banner

Instalacja pakietów w Pythonie

Cześć! To jest fragment książki Python od podstaw, która ma pomóc w nauce programowania od zera. Znajdziesz ją na Allegro, w Empikach i w księgarniach internetowych.

Python był tworzony i rozwijany przez pasjonatów, zafascynowanych tym językiem i chcących działać na jego rzecz. Z czasem powstała cała społeczność ludzi, nazywana Python community. Poza językiem stworzyli oni szereg narzędzi, w tym takie do łatwej wymiany pakietami.

PyPI

Tak też powstała centralna baza pakietów PyPI1 (Python Package Index). Możesz sobie wyobrazić, że jest to wielki dysk, na który twórcy przesyłają pakiety, a użytkownicy je z niego pobierają. Gdy potrzebujesz znaleźć jakiś pakiet, wszystkie są widoczne i opisane na stronie pypi.org.

PyPI ma swoją wyszukiwarkę oraz ogromną liczbę opcji filtrowania wyników. Osobiście jednak rzadko z niej korzystam. Wiele wyników dotyczy mało popularnych pakietów. Znacznie częściej odnajduję sugerowane pakiety na StackOverflow, blogach czy forach, a na PyPI sprawdzam ich użycie i dokumentację (opis działania).

Strona centralnego repozytorium pakietów pypi.org.

Opis pakietu fastly w wersji 0.5.1.

Pip

Jak już wspominałem o pobieraniu pakietu, to służy do tego kolejne narzędzie o nazwie pip3. Jest to system do zarządzania pakietami, czyli program, który umożliwia pobieranie, usuwanie czy zmianę wersji pakietów. Wystarczy go poinstruować, co ma pobrać, a on sam się już tym zajmie.

Pip jest domyślnie instalowany razem z językiem Python. Może się jednak zdarzyć, że na komputerze jest zainstalowany Python, a pip nie. Zacznijmy więc od sprawdzenia, czy u Ciebie pip jest już zainstalowany. Otwórz wiersz poleceń4 (Terminal w przypadku MacOS lub Linux), po czym wpisz "pip --version". Jeśli program jest u Ciebie zainstalowany, to wyświetli się wersja programu. Jeśli nie, to zobaczysz błąd wynikający z odniesienia się do programu, który nie istnieje.

Aby zainstalować pip, wejdź na stronę https://bootstrap.pypa.io/get-pip.py i pobierz ten plik (kliknij prawym przyciskiem myszy i wybierz "Zapisz jako") w miejscu, gdzie otwarty jest wiersz poleceń5. Będzie się on nazywał "get-pip.py".

Następnie uruchom ten plik przy użyciu Pythona, czyli wywołaj "python get-pip.py". Po tym wyłącz i włącz wiersz poleceń, po czym ponowie wpisz "pip --version". Jeśli wciąż komenda ta nie podaje poprawnie wersji, wpisz "pip3 --version". Dodatkowa trójka oznacza, że pip został zainstalowany dla Pythona w wersji trzeciej. W takim wypadku, przy następnych krokach instalacji pakietów używaj "pip3" zamiast "pip".

Jeśli po drodze coś poszło nie tak, powtórz wszystkie kroki instalacji języka z rozdziału Pierwszy program, a następnie instalacji pip6.

Instalacja pakietów z pip

Aby zainstalować pakiet przy użyciu pip, wywołaj w Wierszu poleceń (albo Terminalu) komendę "pip install {nazwa pakietu}" (lub "pip3 install {nazwa pakietu}"). Nazwę pakietu wpisujemy małymi literami.

Zauważ, że komenda do zainstalowania pakietu jest wyszczególniona na stronie PyPI. Poniżej zaznaczona jest metoda do zainstalowania pakietu "fastly".

Instalacja pakietów w PyCharm

Jeśli korzystamy z PyCharm, zarządzanie pakietami jest znacznie łatwiejsze. Wystarczy otworzyć ustawienia (File > Preferences), po czym wybrać zakładkę "Project {nazwa projektu} > Python Interpreter".

Dla używanego w projekcie interpretera Python (możemy mieć na komputerze zainstalowanych kilka), zobaczymy listę zainstalowanych pakietów wraz z ich wersjami. Tą listą możemy łatwo zarządzać przy użyciu plusa i minusa. Minusem usuwamy dany pakiet. Plusem możemy zainstalować nowy. Po jego użyciu wyświetla się wyszukiwarka pakietów. Po znalezieniu pakietu instalujemy go przyciskiem Install Package.

W PyCharm jest jeszcze jedna sztuczka, której często używam. Załóżmy, że poszukujesz w internecie kodu, do wykonania danej operacji. Odnajdujesz go i kopiujesz do pliku Python w PyCharm. Jeśli w kodzie tym wykorzystywany jest pakiet, którego nie masz zainstalowanego, to przy jego importowaniu zaznaczony zostanie błąd. Jeśli ustawisz tam kursor, po czym wciśniesz Alt+Enter (command+Enter na MacOS)7, to zobaczysz sugestię zainstalowania tego pakietu. Zaakceptuj ją poprzez Enter, a PyCharm już zajmie się resztą.

Wersjonowanie

Wielokrotnie wspominałem już o wersjach. Czy to wersjach Pythona, pip, czy pakietów. Po co te wersje? Dobrą metaforą jest tutaj książka. Pierwsze wydanie to pierwsza wersja. Po jakimś czasie autor postanawia wprowadzić jakieś zmiany i powstaje wersja druga. Potem trzecia, czwarta itp. Podobnie jest z oprogramowaniem, ale ponieważ znacznie łatwiej jest dostarczać zmiany do oprogramowania niż do książki, wersji jest zazwyczaj znacznie więcej.

Wersja w programowaniu jest najczęściej opisywana w systemie nazywanym Semantic versioning. Zawiera on trzy części oddzielone kropkami: Major, Minor i Patch. Domyślnie pierwsza wersja gotowa do użytku to "1.0.0", a pierwsza stworzona na potrzeby demonstracyjne to "0.0.1". Gdy wydajemy nową wersję, zwiększamy jeden z członów zgodnie z następującym kluczem:

  • Major — zwiększamy, gdy nastąpiły bardzo istotne zmiany, które sprawiają, że kod napisany dla poprzedniej wersji z dużym prawdopodobieństwem nie zadziała. Przy zwiększeniu, zerujemy części Minor i Patch.
  • Minor — zwiększamy, gdy nastąpiły zmiany, które sprawiają, że kod napisany dla poprzedniej wersji zadziała w nieco inny sposób niż poprzednio. Możemy też oznaczyć pewne elementy jako depricated (czyli, że nie należy ich używać) lub usunąć elementy będące depricated (co również sprawia, że część programów korzystających z poprzednich wersji może nie zadziałać). Przy zwiększeniu, zerujemy część Patch.
  • Patch — zwiększamy, gdy dokonujemy nieznacznych zmian, które nie powinny wpłynąć na używanie naszego pakietu.

Przykład wersji zapisanej w systemie Semantic versioning, z podpisanymi członami MAJOR, Minor i patch.

Wersjonowanie jest bardzo ważne. Wyobraź sobie, że stworzyłeś/stworzyłaś program, który działa dla pakietu w wersji "1.2.3". Działa on doskonale, ale wtedy wychodzi wersja "2.0.0" tego pakietu. Niestety udostępniane przez niego funkcje są zupełnie inne, przez co Twój kod przestanie działać. Możesz oczywiście dostosować swój kod, ale to wymaga dodatkowej pracy. Chcesz to zrobić w swoim czasie, a nie wtedy, gdy wychodzi nowa wersja pakietu. Dlatego właśnie PyPI przechowuje nie tylko ostatnią wersję pakietu, ale także wszystkie poprzednie. My zaś możemy wybrać jaką wersję pakietu chcemy pobrać. Przy pobieraniu przez pip, określamy ją po podwójnym znaku równości, np. "pip install {nazwa pakietu}=={wersja}" (lub "pip3 install {nazwa pakietu}=={wersja}").

Kiedy naprawdę duże projekty są napisane pod konkretną wersję pakietu, dostosowanie się do nowej wersji może być tak kosztowne, że nie chcą się na to zdecydować. Do takiej sytuacji doszło w wielu miejscach z samą wersją języka Python. Kiedy została wprowadzona wersja trzecia, wiele programów zdecydowało się pozostać przy wersji drugiej. Powstał wewnętrzny rozłam, który jest bardzo problematyczny dla całego środowiska. Kod prezentowany na forach czy kursach działać będzie zazwyczaj tylko w jednej z tych wersji. Podobnie pakiety są dostosowane do jednej lub drugiej. Wersja trzecia właściwie stała się już standardem, ale wygląda na to, że szybko nie zapomnimy jeszcze o wersji drugiej.

Zakończenie

Kiedy potrafimy już instalować pakiety i korzystać z języka Python, to świat programowania stoi przed nami otworem. Mnogość pakietów pozwala na wykonywanie skomplikowanych operacji w zaledwie kilku liniach kodu. O tym jednak lepiej przekonasz się w rozdziale czwartym.

1:

Wiele programów i pakietów określa, które ich litery powinny być wielkie, a które małe. Staram się to zawsze respektować. Dlatego piszę PyPI, a nie Pypi. Także pip pisany jest z małych liter, mimo iż jest nazwą własną, chyba że powinien być pisany wielką literą z innego powodu.

3:

Nazwa pip to skrót od "Pip Installs Packages". Zauważyłeś, że rozwinięcie skrótu zawiera skrót sam w sobie? Jest to więc tzw. skrót rekurencyjny. Sporo takich skrótów funkcjonuje w świecie programowania. Uważamy je za zabawne, a że Python był rozwijany przez pasjonatów, którym nikt za to nie płacił, w różnych miejscach można znaleźć przeróżne smaczki. Aby znaleźć kolejny ze smaczków, wpisz "import this" w Python REPL.

4:

Opisałem jak to zrobić w rozdziale Pierwszy program.

5:

Zamiast tego, możemy oczywiście przejść w wierszu poleceń w miejsce, gdzie zapisaliśmy plik. Jest on nieco jak Menedżer plików, czyli program, który uruchamia się, gdy otworzysz "Mój komputer". Jest on otwarty w konkretnym miejscu i tam możesz otwierać pliki lub zmieniać ich nazwy itp. W Menadżerze plików sprawdzamy, jakie są pliki i foldery w miejscu, w którym się znajdujemy, poprzez komendę "dir" (w Terminalu poprzez "ls"). Przechodzimy do folderu poprzez "cd {nazwa folderu}". Aby się cofnąć do folderu, w którym znajduje się aktualny folder, używamy "cd ..". Po wpisaniu "cd" i naciśnięciu Tab zobaczysz listę podpowiedzi. Zacznij wpisywać nazwę i wciśnij Tab, a zobaczysz tylko foldery pasujące do tego, co już wpisane. Jak jest już tylko jedna możliwość, to zostanie ona automatycznie wpisana do końca. Tak przemieszczamy się po folderach w terminalu.

6:

Niestety jest wiele rzeczy, które mogły pójść nie tak. Wyjaśnianie ich kolejno zajęłoby całą książkę i wymagałoby wejścia w wiele aspektów działania systemów operacyjnych. Na szczęście na każdy problem znajdziesz odpowiedzi w internecie. Jeśli jednak nie masz doświadczenia w tego typu operacjach, polecam poszukać pomocy u osoby, która je ma.

7:

Ten skrót pokazuje sugestie kontekstowe. Śmiało używaj go przy wszelkich ostrzeżeniach (żółte podkreślenie) i błędach (czerwone podkreślenie), gdyż często zawiera dobre sugestie automatycznego rozwiązania problemu.