Narzędzia programistyczne¶
Menadżer pakietów pip¶
Jedną z zalet Pythona jest rozbudowana biblioteka standardowa (batteries included), która pozwala na rozwiązanie wielu powtarzających się problemów programistycznych. Istnieje również wiele niestandardowych pakietów, tzn. narzędzi, bibliotek i frameworków w Pythonie, które domyślnie nie są zainstalowane. pip
jest menadżerem pakietów, tzn. specjalnym programem służącym do instalowania i zarządzania tymi pakietami.
pip
jest narzędziem uruchamianym w terminalu lub wierszu poleceń. Przykładowo, jeżeli konieczne jest doinstalowanie django
- popularnego frameworka do tworzenia aplikacji webowych, wystarczy pod Windowsem wpisać:
pip install Django
pip
wymaga uprawnień administratora, dlatego w przypadku Linuxa należy wszystkie polecenia poprzedzić sudo
. W terminalu należy wpisać:
sudo pip install Django
Menadżer zainstaluje najnowszą dostępną wersję Django, jeżeli Django nie zostało wcześniej zainstalowane. Jeżeli Django zostało już wcześniej zainstalowane, nie jest podejmowana żadna akcja, nawet, jeżeli zainstalowana jest starsza wersja. Jeśli jednak pożądane jest zaktualizowanie pakietu do najnowszej wersji, wystarczy dodać przełącznik --upgrade
:
pip install --upgrade Django
Jeżeli potrzebna jest konkretna wersja pakietu, można ją określić używajac polecenia:
pip install Django==1.9.0
Warto zauważyć, że na raz może być zainstalowana tylko jedna wersja danego pakietu. Oznacza to, że dwa poprzednie polecenia spowodują najpierw usunięcie zainstalowanej wcześniej wersji Django, a dopiero później zainstalowanie wskazanej wersji.
Aby wyświetlić listę wszystkich zainstalowanych pakietów, należy wpisać:
pip freeze
Interaktywna konsola IPython¶
IPython jest interaktywną powłoką języka Python. Oznacza to, że możliwe jest wprowadzanie krótkich, najczęściej jednolinijkowych fragmentów kodu w Pythonie i natychmiastowe ich wykonanie oraz wyświetlenie rezultatu.
Aby zainstalować IPythona, należy wykonać w terminalu lub wierszu poleceń następujące polecenie:
pip install ipython
Jeżeli wymagane są uprawnienia administratora, należy wpisać:
sudo pip install ipython
Powłokę uruchamia się w wierszu poleceń lub terminalu:
$ ipython
2 + Python 3.5.2 (default, Jul 17 2016, 17:36:21)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
Następnie możliwe jest wprowadzanie kodu i jego wykonanie po wciśnięciu klawisza enter:
In [1]: 2 + 2
Out[1]: 4
W przeciwieństwie do zwykłej interaktywnej powłoki python
, IPython
rozszerza składnie Pythona o kilka przydatnych narzędzi. Jednym z nich jest znak zapytania, którego można użyć, aby dowiedzieć się więcej o danym obiekcie i wyświetlić dla niego dokumentację:
In [2]: list?
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
Type: type
Należy podkreślić, że powyższy kod działa poprawnie jedynie w powłoce. Umieszczenie list?
w pliku .py
i próba jego wykonania zakończy się błędem SyntaxError
, ponieważ znak pytania nie jest częścią składni Pythona. Użycie dwóch znaków zapytania ??
wyświetla te same informacje razem z kodem źródłowym.
Dużym udogodnieniem jest możliwość wykonywania poleceń basha bez wychodzenia z powłoki lub uruchamiania osobnego terminala. Wystarczy polecenie poprzedzić znakiem wykrzyknika:
In [3]: !pip install Django
Requirement already satisfied (use --upgrade to upgrade): Django in /usr/local/lib/python3.5/dist-packages
Cleaning up...
IPython posiada wiele „magicznych” funkcji poprzedzonych znakiem procenta (%
). Przykładowo, można zmierzyć czas wykonywania danego fragmentu kodu:
In [4]: %timeit range(1000)
100000 loops, best of 3: 16.5 µs per loop
W takim wypadku IPython zmierzył czas utworzenia listy składającej się z liczb od 0 do 999 włącznie. Pomiar polegał na policzeniu czasu, który był potrzebny na utworzenie takiej listy 100 tysięcy razy (100000 loops
). Następnie powtórzono procedurę dwukrotnie i spośród trzech czasów wybrano najkrótszy (best of 3
). Taki sposób pomiaru daje bardziej rzetelne wyniki niż pojedynczy eksperyment.
W tym krótkim wprowadzeniu omówiono jedynie najważniejsze funkcjonalności powłoki IPython
. Najlepszym sposobem na poznanie pozostałych jest wyświetlenie wbudowanej pomocy poprzez wpisanie:
?
lub wyświetlenie ściągawki z najpopularniejszymi poleceniami:
%quickref
lub wejście na portal poświęcony powłoce IPython: https://ipython.org
Jupyter Notebook¶
IPython jest powłoką działającą w terminalu. Zasadniczą wadą takiego rozwiązania jest możliwość edytowania tylko ostatniej linii kodu. Rozwiązaniem tego problemu jest Jupyther notebook - powłoka uruchamiana w przeglądarce, tak jak zwykła strona internetowa.
W celu instalacji powłoki Jupyter, należy wpisać w terminalu lub wierszu poleceń:
pip install jupyter
Jeżeli wymagane są uprawnienia administratora, należy dodać sudo
:
sudo pip install jupyter
Jupyter jest aplikacją składającą się z dwóch modułów: serwera, uruchamianego w terminalu i klienta uruchamianego przez serwer w przeglądarce. Aby uruchomić serwer, należy wpisać:
jupyter notebook
co spowoduje uruchomienie domyślnej przeglądarki (lub utworzenie nowej zakładki w otwartej przeglądarce), w której można zarządzać poszczególnymi notebookami, plikami i folderami znajdującymi się w katalogu, w którym uruchomiono serwer. Poniżej przedstawiono sytuację, gdy ten katalog jest pusty.

Po kliknięciu New
po prawej stronie i wybraniu Python 2
lub Python 3
zostanie utworzony nowy notebook, który można utożsamiać z powłoką. W przeciwieństwie do powłoki, notebook jest na bieżąco zapisywany na dysk.
W polach tekstowych można wprowadzać kod Pythona, a następnie wykonać go naciskając kombinację klawiszy Shift + Enter. W Jupyter notebook dostępne są wszystkie funkcjonalności z powłoki IPython - w szczególności można używać „magicznych” funkcji zaczynających się od znaku procenta %
. Używając znaku ?
można uzyskać pomoc na temat danej funkcji, klasy lub innego obiektu. Informacje o tym obiekcie zostaną wyświetlone w osobnym panelu na dole okna.
Praca w Jupyterze jest dużo przyjemniejsza od powłoki IPython, ponieważ raz wpisany kod można zmienić i ponownie wykonać. Dodatkowo, Jupyter jest zintegrowany z niektórymi bibliotekami i możliwe jest np. wyświetlanie wykresów utworzonych przy pomocy biblioteki matplotlib
. Czyni to Jupytera w pełni profesjonalnym narzędziem porównywalnym do Matlaba. Poniżej przedstawiono, jak może wyglądać przykładowa sesja w Jupyterem.

Zintegrowane środowisko programistyczne (Pycharm)¶
Zintegrowane środowisko programistyczne lub edytor kodu (Integrated Development Environment, IDE) to rozbudowana aplikacja ułatwiająca tworzenie oprogramowania. Takie aplikacje, oprócz funkcji typowych dla edytorów tekstu posiadają wiele dodatkowych funkcjonalności i narzędzi, takich jak:
Autouzupełnianie kodu.
Ułatwiona nawigacja po kodzie dzięki funkcjom takim jak „nawiguj do funkcji” lub „nawiguj do klasy”.
Zintegrowany system kontroli wersji.
Automatyczne formatowanie kodu.
Wyświetlanie dokumentacji powiązanej z daną funkcją lub klasą.
Narzędzia do refaktoryzacji - ułatwiają dokonywanie zmian, które wymagają poprawek w wielu plikach, np. zmiana nazwy funkcji.
Debugger - narzędzie umożliwiające wstrzymanie programu i wykonywanie kodu linijka po linijce oraz śledzenie wartości poszczególnych zmiennych. Narzędzie przydatne do analizy programu przy identyfikacji zauważonych w nim błędów.
I wiele innych.
Nauka obsługi środowiska IDE procentuje zwłaszcza w przypadku tworzenia dużych projektów.
Istnieje wiele środowisk programistycznych dedykowanych do Pythona:
PyCharm
Eclipse z zainstalowaną wtyczką PyDev
Wing IDE
IDLE
Pełna lista dostępna jest pod adresem https://wiki.python.org/moin/IntegratedDevelopmentEnvironments
Warto wiedzieć, że wiele środowisk programistycznych jest darmowa (np. Eclipse) lub dostępna jest nielimitowana czasowo darmowa wersja zubożona o pewne funkcjonalności (np. PyCharm).