IronPython + Eclipse
04.03.2012 19:29
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
Co nowego w IronPython 2.7.2?
Zmiana drugiej cyfry po przecinku wiąże się z wprowadzeniem kilku nowości. IronPython nie tylko umożliwia korzystanie z bibliotek .NET. Dostarczany jest wraz z nim duży zasób bibliotek standardowych znanych z CPython. Wśród nich można znaleźć m.in. moduły sys, os, re, math, thread, socket, itertools, email, xml.etree, a od niedawna również csv. Dzisiejsze wydanie roszerza zestaw o moduły zipimport oraz sqlite3.
Od tego wydania możliwe jest również budowanie samodzielnych aplikacji exe przy pomocy pyc.py, zawierających wszystkie niezbędne biblioteki, które wcześniej trzeba było kopiować do folderu z programem.
Ponadto wersja 2.7.2 wspiera .NET 3.5, .NET 4, Silverlight 4, Silverlight 5, Mono for Android 4.0 i Windows Phone 7.5.
Programowanie w IronPython
Programowanie w IronPython można rozpocząć zaraz po instalacji korzystając z interaktywnej konsoli dostępnej z poziomu menu Start. Przydatny będzie również jakikolwiek edytor kolorujący składnię języka Python. Bardziej wymagający programiści mogą skorzystać ze zintegrowanych środowisk programistycznych takich jak Visual Studio z pluginem Python Tools for Visual Studio lub Eclipse z wtyczką PyDev.
IronPython + Eclipse
Konfiguracja Eclipse jest bardzo prosta i sprowadza się do kilku kroków. W tym wpisie chciałbym głównie zwrócić uwagę na pewną kwestię dotyczącą stosowania zewnętrznych bibliotek dll.
Eclipse wymaga do działania Javy. Środowisko pobieramy w postaci pliku zip i wypakowujemy w dowolnym miejscu na dysku, a następnie uruchamiamy pliki eclipse.exe. Warto utworzyć skrót do tego pliku. Następnie instalujemy PyDev, wybierając z menu Help > Install New Software... (szczegóły instalacji dostępne na stronie projektu PyDev).
Kolejnym krokiem jest dodanie interpretera IronPython. Tworzymy nowy projekt wybierając z menu File > New > PyDev Project, a następnie zaznaczamy jako typ projektu IronPython i klikamy Click here to configure an interpreter not listed.
W oknie Iron Python Interpreters klikamy przycisk New, podajemy nazwę interpretera, np. IronPython 2.7.1 oraz wskazujemy plik ipy.exe (plik ten znajduje się w folderze C:\Program Files (x86)\IronPython 2.7.1, o ile nie zmieniono domyślnej lokalizacji podczas instalacji). Klikamy OK i mamy środowisko gotowe do pracy.
Korzystanie z zewnętrznych bibliotek
Korzystanie z bibliotek zewnętrznych omówię na przykładzie biblioteki iText, służącej do generowania dokumentów PDF. Wersję dla .NET można pobrać ze strony iTextSharp.
W pliku zip znajdziemy itextsharp.dll. Plik ten umieszczamy w dowolnym miejscu na dysku.
UWAGA
Nazwa pliku itextsharp.dll jest inna niż przestrzeń nazw wykorzystywana w języku C#.
using iTextSharp.text; using iTextSharp.text.pdf;
Aby możliwe było korzystanie z biblioteki w IronPythonie należy zmienić nazwę pliku dll na taką jaka wykorzystywana jest przy jej importowaniu!
W tym przypadku nazwę należy zmienić na iTextSharp.dll. Powracamy do okna Iron Python Interpreters i podajemy lokalizację biblioteki wskazując folder, w którym się ona znajduje. Zatwierdzamy zmiany i ponownie uruchamiamy Eclipse.
Czas przetestować bibliotekę. W tym celu dodajemy nowy plik projektu (PyDev Module) i wklejamy poniższą zawartość:
# -*- coding: utf-8 -*- from System.IO import FileStream, FileMode import clr clr.AddReferenceToFileAndPath('iTextSharp.dll') from iTextSharp.text import Document from iTextSharp.text import Paragraph from iTextSharp.text import Font from iTextSharp.text.pdf import PdfWriter from iTextSharp.text.pdf import BaseFont bfVerdana = BaseFont.CreateFont('C:\Windows\Fonts\Verdana.ttf', BaseFont.IDENTITY_H, True) verdana = Font(bfVerdana, 12, Font.ITALIC) document = Document() PdfWriter.GetInstance(document, FileStream('itest.pdf', FileMode.Create)) document.Open() document.Add(Paragraph('Ten blog jest żółty!', verdana)) document.AddAuthor('Krystian') document.Close()
Przy okazji podany został przepis na prawidłowe wyświetlanie m.in. polskich znaków w plikach PDF generowanych przy pomocy iTextSharp.
Miłego kodowania!