Ten wpis to rozwinięcie podstawowego samouczka o używaniu skryptów w języku Python.

Staram się, żeby moje skrypty były niezależne i mieściły się w jednym pliku. Ale czasami to niemożliwe. Niektóre zadania wymagają pomocy modułów zewnętrznych.

Tak jest w przypadku skryptów, które dołączyłem np. do wpisu o metadanych w obrazkach.

Do otwierania obrazków potrzeba modułu zewnętrznego PIL (Python Imaging Library). Jeśli otworzycie mój skrypt w IDLE i naciśniecie F5, żeby go odpalić – a nie macie PIL-a – to wyświetli się komunikat:

Zrzut ekranu z IDLE w trybie interaktywnym. Widać, napisany czerwonymi literami, komunikat 'Brak modułu PIL. Żeby skrypt działał, zainstaluj go, wpisując w PowerShell pip install pillow'.

Na szczęście można bardzo szybko i łatwo instalować moduły zewnętrzne. Python ma od tego programik PIP.

Ciekawostka

Rozwinięcie akronimu PIP to… PIP Installs Packages. To tak zwany akronim rekurencyjny, lubiany w kręgach programistów. Można by go rozwijać w nieskończoność, bo rozwinięcie znów zawiera pełen akronim.

Dzięki PIP-owi uniwersum Pythona stoi otworem. Możemy ściągać z internetu wszelkie dodatkowe narzędzia, jakich tylko potrzebujemy.

Metalowa tabliczka z gry Fallout, stylizowana na dawne amerykańskie plakaty reklamowe. Widać na niej napis Pip-Boy 2000 i uśmiechniętego, rysunkowego mężczyznę unoszącego kciuk do góry.

Źródło: nexusmods.com.

Spis treści

PIP na Windowsie

Żeby użyć PIP-a, trzeba skorzystać z PowerShella, domyślnej konsoli Windowsa
(konsola to takie okienko, w którym wpisujemy różne polecenia, a komputer je od razu wykonuje).

Otwieramy Eksplorator Windows. W lewym górnym rogu klikamy opcję Plik. Wybieramy Otwórz program Windows PowerShell.

Zrzut ekranu pokazujący lewy górny róg programu Eksplorator Windows, z klikniętą zakładką 'Plik'. Czerwoną obwódką otoczono drugą z wymienionych opcji, 'Otwórz program Windows PowerShell'.

Jeden z wielu sposobów na włączenie PowerShella.

Super, mamy okno konsoli! Teraz możemy w nie wpisywać dowolne rzeczy.
Chcemy pobrać pillow, więc w tym wypadku wpisujemy:

pip install pillow

Możecie po prostu skopiować tę linijkę i wkleić do PowerShella, wciskając Ctrl+V.

Naciskamy Enter, żeby potwierdzić. Powinno nam pobrać i zainstalować moduł:

Zrzut ekranu z Powershella. U góry widać wpisaną komendę 'pip install pillow', poniżej biały pasek postępu wypełniony w całości, a na samym dole linijkę tekstu 'Successfully installed pillow'.

Gdybyśmy teraz odpalili przez IDLE skrypt wspomniany na początku:

Zrzut ekranu z IDLE. Widać komunikaty, napisane niebieskimi literami i mówiące 'Sprawdzam obrazki' oraz że obrazek nie zawiera metadanych.

I zrobione! Może i metadanych tu nie ma, ale skrypt działa jak powinien.

Porada

Instalowanie modułów Pythona wymaga łączności z internetem. Jeśli jej nie ma albo coś przerywa, to może wyskoczyć kilka ostrzeżeń i błąd jak z obrazka poniżej.
Wtedy sprawdzamy jakość swojego połączenia na innej dowolnej stronce i próbujemy znowu.
Jeśli to nie pomaga, to znaczy że coś się popsuło po stronie PyPI (stronki z modułami Pythona). Najlepiej się nie zrażać i po jakimś czasie spróbować ponownie.

Zrzut ekranu z PowerShella, pokazujący długi komunikat o błędzie w połączeniu i mówiący, że nie znaleziono odpowiedniej wersji modułu pillow

Instalacja na Linuksie

Przede wszystkim piąteczka!

Linux to ciekawa sprawa. Z jednej strony pozwala oszczędzić sobie roboty, bo Python jest na nim domyślnie zainstalowany.

Ale, żeby nie było zbyt fajnie – to Python systemowy, który od pewnego czasu ma ograniczone możliwości instalowania zewnętrznych modułów. To zmiana na gorsze w porównaniu z tym, co było wcześniej. Dlatego ta część samouczka nieco się zdezaktualizowała i wymagała przepisania :disappointed:

Kwestia instalowania zewnętrznych modułów na Linuksie (przez PIP-a i nie tylko) jest teraz opisana w innym samouczku, zapraszam tam serdecznie!

Tutaj zostawię tylko parę uwag uzupełniających, pokazujących różnice między Linuksem a Windowsem pod względem korzystania z PIP-a.

Informacje uzupełniające na temat PIP-a

Zakładam, że odwiedziliście link znad tej zakładki i macie teraz którąś z następujących rzeczy:

  • PIP-a w aktywnym środowisku wirtualnym,
  • PIP-a zainstalowanego jako moduł systemowego Pythona (plus gotowość do użycia opcji --break-system-packages).

Jeśli tak, to służę paroma informacjami uzupełniającymi.

Przede wszystkim warto wiedzieć, że czasem macie zainstalowane dwie wersje Pythona – starą wersję 2.7 oraz nowszą 3.coś. To tej drugiej chcecie używać.
Upewnijcie się, jak jest. Wpiszcie w konsoli pip --version i spójrzcie, jaką wersję Pythona wyświetla pod koniec.
Jeśli pod samym pip macie wersję drugą, to w celu użycia trzeciej musicie, tam gdzie inni wpisują samo pip, wpisywać pip3.

Druga sprawa: zapewne przy próbie instalacji będzie Wam wyskakiwał błąd Permission Denied. To normalne, Linux chroni część systemu przed zmianami. W razie błędu należy dopisać też opcję --user, żeby instalować dla konkretnego użytkownika.

Podsumowując: tam, gdzie na Windowsie byście po prostu wpisali:

pip install jakiś_pakiet

Na Linuksie zapewne musicie wpisać:

pip3 install --user jakiś_pakiet

Warto o tym pamiętać, czytając instrukcje z internetu.

Znaj swój moduł

Jak sami widzicie, pobieranie modułów zewnętrznych Pythona jest całkiem bezbolesne.

Natomiast nie byłbym sobą, gdybym nie wspomniał o ich ciemnej stronie. Moduły zewnętrzne nie podlegają żadnym rygorystycznym weryfikacjom, dlatego warto czasem osobiście je sprawdzić. Zwłaszcza jeśli poleca je Wam jakaś nieznana strona.

Zawsze kiedy polecam jakiś moduł zewnętrzny, dorzucam też linki do jego źródła. Dzięki temu można osobiście sprawdzić, na ile dany moduł jest popularny i kto za nim stoi.

Nie daje to oczywiście 100% gwarancji bezpieczeństwa (nawet do najbardziej zaufanego modułu ktoś mógł „dorzucić” szemrany kod – przykładem afera XZ). Ale nawet taka lekka kontrola jest lepsza niż ślepe zgadzanie się na wszystko – co przecież często robimy, instalując różne byznesowe programy od korpo.