Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Instalacja pakietów w Pythonie 3

Przypomnienie

We wrześniu 2012 pisałem o Pythonie 3.3.0 oraz instalowaniu pakietów w wirtualnym środowisku. Aktualna wersja Pythona oznaczona jest numerem 3.3.3. Sporo się w tym czasie zmieniło (na lepsze), więc czas na aktualizację.

Distribute -- fork pakietu Setuptools -- został porzucony, choć nie do końca, bo w istocie został wcielony do setuptools, który znowu jest intensywnie rozwijany. Setuptools sprawdza się dobrze w instalowaniu pakietów za pomocą polecenia easy_install, jednak nie oferuje możliwości zarządzania zainstalowanymi pakietami. Taką możliwość daje nam pip.

Od dziś używaj pip

Powyższy opis może wydawać się skomplikowany, szczególnie dla osób, które nie śledzą zmian wprowadzanych w tych pakietach. Na szczęście sytuacja uległa uproszczeniu. Teraz możemy zainstalować pip bezpośrednio. W tym celu należy zapisać na dysku pliku get-pip.py i wykonać:

python get-pip.py

Calepin

W poprzednich wpisach wspominałem o reStructuredText i statycznych stronach internetowych w Emacsie. Pomysły te można wykorzystać do stworzenia własnego blogu, jednak zadanie to może okazać się trudne dla osób, które nie miały do czynienia z programowaniem. Kolejnym problemem może się okazać publikacja postów przygotowanych w postaci plików html. Dziś zaprezentuję złoty środek o nazwie Calepin (z języka francuskiego -- notes).

Calepin = Markdown + Dropbox

Calepin pozwala publikować posty zapisane w plikach tekstowych z użyciem składni Markdown. Jedyne czego potrzeba to konto na Dropboksie i kilka minut na zapoznanie się z Markdown.

Trudno wyobrazić sobie lepsze połączenie.

Python 3.3 venv

Ukazał się Python 3.3.0. Oprócz poprawek wydajności (np. do 80x szybszy moduł decimal) i ogólnych "porządków" jak np. reorganizacji hierarchii wyjątków OS i IO, pojawił się m.in. wbudowany moduł venv (Virtual Environments). Wirtualne środowiska Pythona nie są czymś nowym, ale po raz pierwszy są dostarczane "w standardzie". We wcześniejszych wersjach Pythona można doinstalować moduł virtualenv.

"Wirtualne środowiska" są odizolowane od głównej instalacji Pythona w systemie. Przydają się np. przy eksperymentowaniu z zewnętrznymi pakietami, umożliwiają bezproblemowe instalowanie i używanie różnych wersji bibliotek itd.

Utworzenie wirtualnego środowiska Pythona

Utworzenie wirtualnego środowiska Pythona w systemie Windows polega na uruchomieniu skryptu pyvenv.py wraz z podaniem nazwy nowo tworzonego środowiska. Skrypt pyvenv.py znajduje się w folderze C:\Python33\Tools\Scripts.

IronPython + Eclipse

Ukazała się wersja release candidate IronPythona 2.7.2. Wydanie wersji stabilnej zaplanowano za tydzień. Jest to dobra okazja, by przyjrzeć się tej wersji Pythona, ponieważ wprowadzono w niej kilka istotnych nowości.

Kilka słów o IronPython

IronPython to pełnoprawna implementacja języka Python napisana w C#, zapewniająca pełną integrację z platformą .NET Framework i Mono. W porównaniu do podstawowej implementacji (CPython) charakteryzuje się:

  • dostępem do bogatych zasobów bibliotek standardowych .NET Framework
  • dostępem do zewnętrznych bibliotek dll dla .NET za pomocą modułu clr
  • wsparciem dla technologii Silverlight
  • brakiem Globalnej Blokady Interpretera (GIL), dzięki czemu aplikacje wielowątkowe wykorzystują możliwości procesorów wielordzeniowych
  • łatwą kompilacją plików py do samodzielnych plików exe (Tools\Scripts\pyc.py)
  • mniejszymi rozmiarami aplikacji w porównaniu do tych budowanych przy pomocy py2exe czy cx_freeze dla CPythona

Samowystarczalne aplikacje Pythona cz. 2

W poprzednim wpisie opisałem jak w prosty sposób z plików .py (.pyw) zbudować samowystarczalne aplikacje Pythona. Podałem zalety i wady tego rozwiązania. Najpoważniejszą wadą jest dość duży rozmiar aplikacji. Poza tym zamiast plików zip, których zawartość należy rozpakować, lepszy byłby instalator exe, który zainstaluje aplikację i np. utworzy na pulpicie skrót do programu.

W tym wpisie skorzystamy z narzędzi cx_freeze, upx oraz NSIS. Pierwszy z nich działa podobnie do py2exe, drugi posłuży do znacznego zredukowania rozmiarów plików, a trzeci do utworzenia instalatora.

Spolszczenie interfejsu

Załóżmy, że napisaliśmy aplikację z interfejsem graficznym wykorzystującym PySide lub PyQt4.

Samowystarczalne aplikacje Pythona

Wstęp

Programy napisane w Pythonie mają rozszerzenie .py lub .pyw. Zazwyczaj rozszerzenie .py stosuje się dla aplikacji konsolowych, a .pyw dla aplikacji graficznych. Różnica między nimi polega na tym, że programy z rozszerzeniem .pyw nie uruchamiają w tle okna wiersza poleceń.

Zalety plików py

* programy/skrypty są niewielkie* można zobaczyć kod źródłowy programu przed jego uruchomieniem

Wady plików py

* do działania wymagają interpetera języka Python, a często dodatkowych bibliotek* nie zawsze chcemy dzielić się kodem źródłowym z innymi

Jeśli piszemy programy na własny użytek to powyższe wady nie mają znaczenia. Problem zaczyna się, gdy chcemy podzielić się programem z innymi. Nie każdy użytkownik Windowsa ma zainstalowany interpreter tego języka, nie wspominając już o wymaganych bibliotekach. Znacznie częściej możemy spotkać na komputerach środowisko uruchomieniowe JRE dla programów napisanych w języku Java. Nieco inaczej przedstawia się sytuacja wśród użytkowników Linuksa. Popularne dystrybucje zwykle zawierają Pythona, a część popularnych bibliotek jest instalowana wraz z zależnościami innych programów. Istnieją jednak rozwiązania powyższych problemów.

R jak raport

Wstęp

Tytułowe raporty, sprawozdania, artykuły można pisać/tworzyć przy pomocy wielu narzędzi. Najpopularniejszym jest pakiet MS Office. Dane z prób, eksperymentów wprowadzamy do Excela, przeprowadzamy obliczenia, analizy, a następnie wyniki kopiujemy do Worda. To najczęściej wykorzystywany sposób postępowania. Prosty i skuteczny. Przynajmniej w przypadku niewielkiej ilości raportów.

Duże ilości raportów można tworzyć w sposób programowy, np. przy użyciu narzędzia dla języka Python -- ReportLab. Jest to rozwiązanie trudniejsze, ale niezwykle efektywne.

Trzeci sposób, będący tematem tego wpisu, to rozwiązanie pośrednie, kompromis pomiędzy wygodą, a efektywnością.

R jak raport

Sweave jest narzędziem pozwalającym na osadzenie kodu R w dokumentach LaTeX. GNU R jest językiem programowania (dialektem S) i środowiskiem do obliczeń statystycznych, analizy danych oraz wizualizacji wyników.

Podstawowa wersja R dostępna jest na stronie R-project jako produkt open source.

Rok blogowania

Blog w liczbach

Dokładnie rok temu pojawił się na tym blogu pierwszy wpis. W tym czasie opublikowałem 23 wpisy, z czego 21 trafiło na stronę główną. Łączna liczba wyświetleń przekroczyła 23 000. Nie jest to może oszałamiająca wartość, ale tematyka którą poruszałem skierowana była raczej do wąskiego grona odbiorców.

Dziękuję redakcji za wyróżnienia oraz wszystkim czytelnikom, a w szczególności tym, który odwiedzali ten blog zaznaczając swoją obecność w komentarzach (kolejność przypadkowa):

GL1zdA, borzole, przemo_li, TestamenT, Orlando, webnull, Olbi, Airborn, StawikPiast, Karolinah, Pigmej, mati75, Druedain.

Życzenia urodzinowe

Przy okazji zdmuchiwania świeczki z urodzinowego tortu pomyślę ,,głośno'' kilka życzeń:

1. możliwość edycji kodu html wpisów luba) ograniczone BBCODE zastąpić Markdownb) poprawić znacznik code tak, aby uwzględniał wcięcia; na forum to działa prawidłowoc) dodać możliwość wstawienia czcionki stałej szerokości ,,między wierszami'' (coś jak \texttt{} w LaTeX-u lub `print()` w reStructuredText / Markdownd) opcja kolorowania składni kodu byłaby miłym dla oka dodatkiem2. ,,współczesny'' layout3.

Programowanie funkcyjne w Pythonie

W komentarzu do poprzedniego wpisu nintyfan napisał:

Python jest świetny. To co możemy zrobić przy pomocy generatorów i iteratorów (również w postaci konstruktora tablicowego) jest niesamowite. Prosty, przejrzysty, przyjemny zapis. Nie wspominając o składni z wcięciami.

O wcięciach w kodzie już było, więc teraz napiszę nieco o generatorach, iteratorach i programowaniu funkcyjnym. Zapraszam do czytania;)

Wstęp

Język Python można wykorzystać do programowania proceduralnego, zorientowanego obiektowo oraz (w mniejszym stopniu) programowania w stylu funkcyjnym (funkcjonalnym). Największą rolę odgrywa styl obiektowy, chociaż coraz częściej spotykam ciekawe rozwiązania napisane w stylu funkcyjnym. Nic w tym dziwnego. Programowanie funkcyjne pozwala w znaczny sposób zredukować ilość kodu.

Języki takie jak C, C++, Java to języki imperatywne. Programy w nich napisane zawierają zmienne i obiekty, na których przeprowadzane są operacje.

Programy napisane w Pythonie

Wstęp

Jako amator programowania przeglądam czasami fora internetowe, strony typu Q&A jak StackOverflow w poszukiwaniu podpowiedzi lub rozwiązań niektórych problemów. Wśród konkretnych pytań zdarzają się też rozważania ogólne typu: Czy język programowania A jest wydajniejszy od B? Dlaczego warto uczyć się języka C? Od jakiego języka rozpocząć naukę programowania?

Można wyróżnić m. in. następujące kryteria wyboru:

1) popularność (a co za tym idzie, dostępność materiałów)2) przykłady znanych programów napisanych w danym języku3) stopień trudności4) wydajność5) przenośność

Ekstremalna wydajność nie zawsze jest priorytetem. Ze względu na popularność systemu Windows, również przenośność bywa sprawą pomijalną (choć w przypadku Pythona nie ma z tym problemów, gdyż programy są interpretowane przez tzw. interpreter, a nie kompilowane do kodu maszynowego). Ważne jest aby napisać aplikację spełniającą swoje zadanie, a najlepiej taką, która odniesie pewien sukces (ze względu na popularność lub sukces komercyjny).

Łatwość nauki danego języka i szybkość rozwijania aplikacji jest równie ważna, chociaż bywa sprawą dyskusyjną.