Python jest językiem ogólnego zastosowania. Tzn. można w nim napisać zarówno samodzielny program jak i stworzyć potężny serwis internetowy. Jest to język charakteryzujący się wielką czytelnością kodu jak i ponadprzeciętnymi możliwościami. Z najbardziej rzucających sie na początek cech dla osoby, która pierwszy raz styka się z tym językiem jest używanie wcięć do zaznaczania bloków kodu. Na początku trudno mi było się do tego przyzwyczaić ze względy na nawyki wyniesione z innych języków programowani. I właściwie to był główny powód dla którego na początku nie interesowałem się tym językiem. Przekonały mnie jednak b. dobre recenzje ze strony autora Thinking in Java czy niektórych guru od Perla (zobacz wywiad z Brucem Eckelem). Stosowanie wcięć do zaznaczania bloków teraz mi się podoba, bo wymusza czytelne pisanie kodu i z tej opcji korzystają wszystkie edytory do Pythona (można zwijać bloki do jednego wiersza). (Nazwa języka pochodzi od Latającego Cyrku Monty Pythona).
Kod Pythona jest nieporównywalnie czytelniejszy od Perla, Ruby czy PHP. Wymaga 5x mniej pisania niż Java oraz 15x mniej pisania niż C/C++ aby uzyskać podobny efekt. A czytelniejszy, krótszy kod to mniejsze prawdopodobieństwo potencjalnych błędów oraz tańsze utrzymanie kodu. Python uchodzi za bardzo dobrze zaprojektowany język. Jest przejrzysty i spójny (czego np. nie można powiedzieć o PHP, który jest językiem bardzo bałaganiarskim i pełnym niespójności). Spójny i przejrzysty język łatwiej się zapamiętuje i mniej trzeba wertować po książkach i manualach aby odnaleźć odpowiednią funkcję.
Python jest językiem mocno obiektowym, wpiera wielokrotne dziedziczenie (czego nie potrafi Java), obsługuje przestrzenie nazw (do czego nadal nie dorósł nowy PHP5). Wszystkie obiekty Pythona są przekazywane przez referencje (czego nie ma w PHP4). Wszystkie funkcje są polimorficzne. Pozwala dosyć elastycznie przeciążać operatory (co tylko częściowo potrafi PHP5). Python ma wbudowane silne mechanizmy introspekcji co ułatwia debugowanie programu.
Za pomocą Jythona można stworzyć 100% aplety Javy. Jython to Python napisany całkowicie w Javie. Możliwe jest więc tworzenie Javy bez Javy. :) Czytelniej i krócej (ok 5x). Python jest interpreterem co powoduje unikalną możliwość krokowego odpalania apletów Javy za pomocą Jythona. Python można dosyć prosto rozszerzać za pomocą modułów napisanych w języku C.
W ciekawy sposób radzi sobie z ładowanymi modułami. Otóż kod źródłowy wciąganych plików (*.py) jest automatycznie kompilowany do bytecodu (*.pyc). Za następnym razem wczytywany jest już ten skompilowany plik co przyśpiesza działanie programu. Bytecode Pythona to kod pośredni, skompilowany do wirtualnej maszyny Pythona (analogicznie jak to jest w Javie). Pliki *.pyc są multiplatformowe, tzn. powinny bez żadnych zmian działać równoczesnie na Windows, Linuksie i Macintoshu.
Jako ciekawostkę warto dodać, że Python operuje na liczbach całkowitych o nieskończonej dokładności. Tzn. tak dużej na ile pozwala pamięć operacyjna komputera. Nadaje się świetnie do obliczeń inżynierskich i naukowych. Warto wspomnieć o jeszcze jednym, ważnym zastosowaniu Pythona: prototypowanie. W Pythonie tak szybko się pisze kod i łatwo wyłapuje jego błędy, że warto algorytmy, które docelowo mają być napisane np. w C++ napisać w Pythonie a potem tylko przepisać do języka docelowego. Większą bowiem część czasu traci się zwykle na testowanie i poprawianie błędów. Szybkość tworzenia kodu w Pythonie jest tak wielka, że praktycznie zamiast tracić czas na mozolne wstępne zaprojektowanie całej aplikacji, można od razu wszystkie pomysły testować od ręki.
Python trzyma się zasady "bateries included". Standardowe biblioteki wchodzące w skład każdej dystrybucji Pythona są tak elastyczne i potężne, że rzadko kiedy istnieje potrzeba aby sięgać po jakieś zewnętrzne moduły. Python ma genialnie rozwiązane konwertowanie znaków (PHP ma w ogóle problemy przekształceniami między utf-8, mac-ce, cp1250 i iso-8859-2).
To, co zupełnie przeważyło szalę, że np. machnąłem ręką na Perla (który swego czasu b. mi się podobał za swoją elastyczność) to bardzo wygodne narzędzia z grupy RAD (Rapid Development Application). Python ma cały szereg darmowych edytorów IDE (zintegrowanych z graficznym debuggerem). Tworzenie aplikacji w tym języku to po prostu przyjemność.
Z polskich książek warto zwrócić uwagę właściwie tylko na te pozycje (reszta jest fatalnej jakości, z móstwem błędów):
- "Programowanie: Python" David M. Beazley - dobre i przystępne wprowadzenie dla początkujących
- "Python. Wprowadzenie" Mark Lutz, David Ascher - podst. podręcznik dla programisty, opisane są tu funkcje standardowej biblioteki Pythona
- "Po prostu Python" - w sumie ta książka nic nowego nie wnosi do tych dwóch wyżej. Mnie nie podoba się układ i sposób prezentacji materiału, ale ma też swoich zwolenników.
Książki w pozostałych językach.
Linki
- Python Programming Language - strona główna , od niej warto zacząć
- Python - strona polska - uboga ale posiada manual po polsku.
- Usenet comp.lang.python, comp.lang.python.announce, pl.comp.lang.python. Grupa angielska jest b. aktywna i pomocna. Zobacz także serwer newsowy: news.gmane.org gdzie jest b. dużo grup pythonowych: gmane.comp.python.*
- The Vaults of Parnassus Python Resources - duże archiwum aplikacji i rozwiązań w języku Python
- HostScripts.com dla Pythona
- MailMan - b. dobry manager list dyskusyjnych. Zarządzany przez www.
- pyWM - klient mailowy przez www.
- Numerical Python - potężna biblioteka dla inżynierów do skomplikowanych operacji matematycznych, b. szybko wykonuje operacje na wielkich macierzach.
- pyOpenSSL
- Web Programming - anglojęzyczne wiki do aplikacji internetowych w Pythonie.
- ClientCookie - b. dobra biblioteka rozszerzająca standardową urllib2 o operacje na cookies.
- Python Package Index - repozytorium różnych modułów do Pythona
- Python, Atlantibots and Programming Links
- wmi - rozszerzenie do modułu win32 Marka Hammonda
- PyGoogle - API wyszukiwarki Google
- PyMeld - program do manipulacji HTML i XML
- The What, Why, Who, and Where of Python
- ONLamp.com Python Devcenter
- python.oreilly.com
- Object-Oriented Language: Python (http://www.cetus-links.org/oo_python.html)
- Open Directory Project - Python (http://dmoz.org/Computers/Programming/Languages/Python/)
- Python-Eggs
- #python.pl@IRCnet
- Procesy i pamięć dzielona
- POSH - możliwość współdzielonej pamięci pod Uniksem (wydajniejsze od pracy wielowątkowej) Niestety nie do końca to działa sprawnie. Wywala błędy pamięci przy próbie pisania wartości None do słownika. :( Zobacz też dyskusję.
- PyIPC - unix interprocess communication services
- Vmaps - Python Arrays on mmap()
- Paramiko - implementacja SSH2
- cfgparse - python configuration file parser module
- PyLint - Pylint is a python tool that checks if a module satisfy a coding standard. Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. But Pylint offers some more features, like checking line-code's length, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more.
- Python Decorator Library
- Python for Nokia Series 60 - Python na telefon Nokii
- Python Cryptography Toolkit
- BAOW - aplikacja wzorowana trochę na znanym sofcie do tworzenia forum: phpBB
- BeatifulSoap - Python HTML/XML parser designed for quick turnaround projects like screen-scraping. Zobacz też tekst1, tekst2.
-
Dokumentacja, przykłady kodu
- The Whole Python FAQ - rozbudowany anglojęczny FAQ do Pythona
- Python FAQ - polskie - polskie FAQ w formie WIKI (dopiero raczkuje).
- Python 2.4 Quick Reference - świetny, zwarty spis metod i funkcji Pythona
- Python tutorials
- Python Documentation - dokumentacja, książki, esseje, linki do artykułów dla nieprogramistów, dla początkujących oraz dla zaawansowanych.
- Python.faqts
- Python Learning Foundation
- Instant Hacking czyli nauka programowania na przykładzie Pythona
- Useless Python
- ASPN Python Cookbook - kopialnia skryptów podzielonych na kategorie
- Dive Into Python - bardzo dobra książka online dla programistów chcących poznać Pythona
- Standard Python Library
- GUI Programming with Python: QT Edition
- PEP index - PEP to skrót od Python Enhancement Proposals czyli propozycji ulepszeń w Pythonie. Rozwój tego języka jest b. uporządkowany.
- Python Slideshow Presentations - prezentacje (głównie w Powerpoint) na temat Pythona które można pokazać szefowi, współpracownikom, klientom, kolegom.
- Python Gotchas - tricki i sztuczki
- Google Directory
- Python and Scientific Computing
- PythonProgrammersWeblog
- Programowanie przy użyciu biblioteki curses w Pythonie
- File managment in Python
- IPython - interaktywna konsola Pythona
- Routes - pythonowa implementacja resolvera url w stylu podobnym do Ruby on Rails
- Czasopisma
- Daily Python-URL
- Python Journal
- PyZine
- ZopeMag
- "Thinking in Python" Bruce Eckel - pełna wersja online autora takich bestselerów jak "Thinking in C++" oraz "Thinking in Java".
-
Inne platformy i języki
- Jython - Python napisany całkowicie w Javie. Umożliwia korzystanie z bibliotek Javy i tworzenie 100% bytecodu Javy za pomocą znacznie prostszej i czytelniejszej składni Pythona.
- IronPython - szybka implementacja Pythona dla .NET i MONO. Zobacz przykłady z blogu autora, Jima Hugins'a
- Pyrex - to Python z opcjonalnymi typami języka C umożliwiający szybkie tworzenie rozszerzenia w C
- BOO - 95% składni Pythona, + składnia języka C#. Generuje CLR na platformę .NET (istnieje też plugin do kolorowania składni i podpowiedzi kodu dla SharpDevelopera!) )
- Java Embedded Python
- Mac Python - Python na platformę Macintosha.
- Python for Delphi
- Python for .NET
- PocketPC Python
- Python Compared to Other Languages
- Java and Python: A Comparative Review
- Python & Java: a Side-by-Side Comparison
- Porównanie Pythona z językami: Java, JavaScript, Perl, Tcl, Smalltalk, C++, Lisp, Scheme)
- filozofia Perla vs filozofia Pythona
- Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java.
- Wacky world of Ruby - krytyka Rubiego z perspektywy Pythona
- Serwery aplikacyjne
- Zope & Plone
- Zope - Zope to kompletny serwer aplikacyjny o b. dużych możliwościach. B. silna obiektowość (każdy jego element jest obiektem, nie ma idei systemu plików). Ma wbudowane mechanizmy autoryzacji, CMS (Content Managment System, np. Plone)
- Zope3 - przebudowany od podstaw Zope. Znacznie szybszy, znacznie łatwiejszy dla developerów. Na razie wyszła stabilna wersja 3X, czyli bez zgodności wstecznej z Zope2. Zobacz podręcznik The Zope 3 Developers Book (także w postaci jednego pliku PDF, prawie 500 stron tekstu!)
- Z3ECM - Enterprise Content Managment for Zope3
- Plone - bardzo dobry, obiektowy CMS oparty na Zope. Niektórzy uważają, że dla Plone warto uczyć się Pythona i Zope. :)
- Visual Guide to the Zope/Plone Interface
- Krótkie wprowadzenie do Plone
- Definitive Guide to Plone - wesja online! (vide: recenzja książki oraz kod do przykładów w książce, wszystko dostępne w SourceForge.net)
- Plone's How-to's
- Zope & Plone API's. (more here).
- Produkty Plone
- Collective - produkty Plone z sourceforge.net
- Plone po polsku
- Zopezen - artykuły do Zope i Plone
- ZopeMag Weekly, an intermittent series of Zope and Plone tips and tricks
- CPSSkins - visual theme editor for CMF, CPS and Plone.
- REACT - produkt dla Zope2 wzorowany na funkcjonalności Ruby on Rails
- mod_zope - eksperymentalny moduł do Apache 2
- CherryPy - Ciekawy i niesamowicie prosty (pythonowy) serwer aplikacyjny. Automatycznie wiąże fragmenty wirtualnej ścieżki w URL do odpowiedniej klasy która to obsługuje. Obsługuje procesy, wątki, pulę procesów, pulę wątków, sockety TPC oraz sockety uniksowe (co pozwala na łatwe znalezienie stosunkowo niedrogiego hostingu).Może korzystać z własnych szablonów oraz innych, np. Cheetah. CP2 od wersji 2.1 wprowadza WSGI i może teraz pracować pod mod_python czy fastcgi. To duży krok naprzód. W wersji 2.1 wprowadzono także wiele inny7ch poprawek. Od wersji 2.0 CP2 pracuje tylko w trybie wątkowym (porzucono model forkowy). Nowy CP2.1 można podpiąć pod mod_python'a.
- Webware - Webware to wielowątkowy serwer aplikacyjny konkurencyjny wobec Zope (jest znacznie prostszy, modularny i łatwiejszy w opanowaniu). Jest szybszy od CherryPy ok 2x (mod_webkit), jego wbudowany httpd jest szybszy od CherryPy ok 50%. Jest trochę szybszy od SkunkWeb'a, ale wolniejszy od najszybszego frameworka: Myghty. No i niestety Webware ma koszmarną stronę www i równie fatalną dokumentację. A na domiar złego, nie ma wersji stabilnej tylko przedpotopowa 0.8.1 oraz SVN. Można też przyczepić się że rózne "kity" nie są zes sobą kompatybilne i panuje tu ogólny chaos projektowy. Jednakże autorzy Webware są mocno zaangażowani w WSGI i to jest b. dobry kierunek!
- SkunkWeb - bardzo szybki serwer aplikacyjny z bardzo rozbudowanymi mechanizmami cache i opierający się na idei komponentów podobnie jak perlowy Mason (pozwala to bardzo zmodularyzować aplikację). Skunkweb intensywnie wykorzystuje cache komponentów i wykorzystuje w pełni wiele procesorów na serwerze. W odróżnieniu od Webware (który jest serwerem wielowątkowym) Skunkweb jest serwerem wieloprocesowym (wykorzystuje forks a nie threads), co stanowi problem z uruchomieniem go na Win32 (zobacz też moduł POSH na systemy POSIX, który daje wspólną pamięć dla procesów). Posiada wbudowany mechanizm wielojęzyczny (catalogs). Dokumentacja, podobnie jak w przypadku Webware jest nieduża i niekompletna zmuszając użytkownika do czytania źródeł i docstringów, ale te są w miarę dobrze opisane.
- Twisted - to właściwie nie serwer aplikacyjny ale duży framework oparty na zdarzeniach i asynchronicznej pracy. Posiada spore możliwości i wygląda na dojrzały projekt. Zobacz Nevow oraz jego przykłady. Twisted 2.0 korzysta z interfejsów Zope3. Niestety jest trudny do nauki ze wzgl na koniecznośc uwzględniania specyfiki pracy asynchronicznej. Dokumentacja też jest za słaba, a do Nevow (szablonów które są zalecane w miejsce poprzednich Woven) to prawie nie istnieje! Quixote - wydajny serwer aplikacji ale nie do końca ma dopracowaną pracę pod win32 i obsługę wątków.
- Python Servlet Engine - system podobny (celowo) do PHP, choć wydaje mi się, że Spyce jest dojrzalszym produktem
- Maki - nie tyle serwer aplikacyjny, co kompletny framework do budowania stron internetowych opartych na czystym XML i XSLT. Pythonowy odpowiednik xmlowo-javowego duetu Tomcat + Cocoon.
-
Szablony
- STML - bardzo wygodne komponenty-szablony z potężnymi możliwościami cacheowania. Bardzo elastyczne możliwości includowania. Są częścią serwera aplikacji SkunkWeb i nie można ich użyc (na razie) w sposób niezależny.
Kid - wzorowany na ZPT, TAL i PHP prosty język szablonów. Bardzo interesujący projekt! Przetwarza xml/xhtml za pomocą ElementTree, działa jako servlet w Webware. - Nevow - rozbudowany framework do Twisted z zaimplementowanym dwukierunkowym Ajaxem. Zobacz WIKI, manual oraz przykłady.
- ZPT - szablony z których korzysta serwer aplikacyjny Zope. Charakterystyczne jest to, że logika szablonów jest ukryta w atrybutach kodu html dzięki czemu szablony te są przezroczyste dla edytorów wizualnych takich jak Dreamweawer. ZPT doczekało się więcej implementacji: OpenTal, SimpleTal. Zobacz też implementacje ZPT w innych językach, m.in. Java, PHP i Perl.
- SimpleTAL - SimpleTAL is a stand alone Python implementation of the TAL, TALES and METAL specifications used in Zope to power HTML and XML templates. SimpleTAL is an independent implementation of TAL; there are no dependencies on Zope nor is any of the Zope work re-used.
- CherryTemplate - podobne do ZPT ale prostsze.
- Webware/PSP - język szablonów warstwy prezentacyjnej osadzający Pythona w HTML. Część serwera aplikacyjnego Webkit wchodzącego w skład większego pakietu: Webware. Podobnie jak Cheetah, pozwala tworzyć szablony metodami obiektowymi. Najlepiej uruchamiać Webkita za pomocą modułu Apache mod_webkit (najszybciej) lub webkit/webkit.exe - b. szybkiego i małego adaptera w C++ który jest szybszy nawet od Webkita korzystającego z mod_python. Mimo, że webkit.exe odpala się jako CGI to ma bardzo dużą wydajność, bo to tylko adapter do nasłuchującego na jakimś porcie (domyślnie 8086) Webkita.
- mod_python/PSP - moduł mod_python od wersji 1.3 potrafi przeplatać pythona z HTML i stanowić będzie chyba najprostszą formę (poza CGI) udostępnienia Pythona przez providerów. Zobacz też Vampire, moduł rozszerzający mod_pythona. Pliki binarne do python 2.4/win32 są tutaj. Tu są ciekawe artykuły o mod_python.
- HTMLTemplate - converts HTML/XHTML templates into simple Python object models that can be manipulated through callback functions in your scripts. Fast, powerful and easy to use.
- ClearSilver - szablony iezależne od językam,. Używa ich Trac.
- PyMeld - A simple, lightweight system for manipulating HTML (and XML, informally) using a Pythonic object model.
- StringTemplate - szablony do Javy, C# i Pythona
Cheetah - bardzo wygodne o czytelnej składni, z własnym cachem i co ciekawsze można tworzyć kolejne szablony za pomocą mechanizmów przeciążania szablonów potomnych. Cheetah moga współpracować z Webware, Spyce lub działać jako samodzielny parser. Ma niedopracowany cache (nie ma zapisu na dysku i co gorsze Cheetah nie jest w ogóle odporny na wątki. Ma też słabe możliwości includowania (np. nie można przekazac parametrów). Poza tymi wadami jest bardzo wygodnym systemem szablonów. Kompiluje szablony do modułow pythona, można tworzyć nowe szablony nna bazie obiektowego dziedziczenia po starych.
-
Web services (zobacz też poniżej sekcję: Frameworks)
- Pyro (Python Remote Object) - ciekawe rozwiązani, dobra dokumentacja, ale klientem musi być Python.
- SOAP - podobno najlepiej dopracowane (wymagana instalacja modułu fpconst).
- SOAP dla ActivePython
- ZSI (SOAP)
- XML-RPC: http://www.pythonware.com/products/xmlrpc/, http://sourceforge.net/projects/py-xmlrpc/) - aktualnie xmlrpclib jest częścią standardowej biblioteki Pythona.
- Transmitting exceptions through XML-RPC
- omniORB - CORBA dla Pythona i C++
-
Frameworki, systemy komponentowe i szablonowe
- Django - Wcześniej przez parę lat rozwijany jako projekt komercyjny, reklamowany jako profesjonalny framework dla Pythona. Dostępny jest kanał RSS i irc://irc.freenode.net/django który też jest logowany. Podobnie jak Rails używa ActiveRecord, a Subway SQLObject, tak i Django używa własnego ORM'a. Można powiedzieć, że Django w zamierzeniu ma być jest pythonową alternatywą dla Ruby on Rails
- Myghty - pythonowa implementacja systemu komponentowego wzorowanego na Perl:Mason. Myghty posiada duże możliwości, cache, filtry, rozbudowane includowanie jak i dziedziczenie komponentów. Projektowany do ciężkich, biznesowych zastosowań. Projekt wygląda na znacznie lepiej dopracowany od strony implementacji w porównaniu do CherryPy. Myghty jest najszybszym pythonowym frameworkiem. Jest szybszy nawet od Webware i SkunkWeb. Wymaga tylko mod_python'a ale działa także w trybie CGI, WSGI i jako standalone serwer. Posiada także zaimplementowany moduł Ajax Zobacz dodatkowe komentarze. Zobacz też artykuł na temat Ajax'a oraz przykładowy kod. Zobacz też Ajax
- Pylons - zbudowany na Myghty z uwzględnieniem Routes i Paste.
- Blog. Zobacz ostatni artykuł o Myghty.
- Python Paste Power - artykuł pokazujący jak używać nowego mechanizmu Paste w Myghty
- Spyce2 -z wyglądu wydaje się byc pythonowym odpowiednikiem PHP, gdyż łatwo można przeplatać kod Pythona z kodem HTML. Unikalną cechą Spyce jest możliwość tworzenia biblioteki własnych tagów tak jak w JSP który to robi w Javie. Spyce 2, który niedawno wyszedł dodał kilka dodatkowych możliwości, np. handlery do formularzy, co (w połączeniu z aktywnymi tagami)daje mu możliwości jakie reklamuje środowisko ASP.NET. Trzeba dodac, że Spyce uchodzi za bardzo stabilny projekt. Szkoda, że brakuje mu mechanizmu cache do fragmentów stron. To, moim zdaniem, jego główna wada. Przeplatanie pythona z html jest też kontrowersyjne, ale np. świetnie nadaje się za to do zastosowań gdzie głównie używa się php, np. integracja z Red Dot'em.
- Subway - projekt będący odpowiedzią na Rails dla języka Ruby. Korzysta z CherryPy oraz Cheetah. Subway korzysta z nowej, ciekawej wersji CherryPy i Cheetah, FormEncode do zarządzania formularzami. Bardzo przejrzysty kod.
- No Rails for Python? - dyskusja na temat potrzeby jednego, ujednoliconego podejścia do budowania aplikacji internetowych na wzór Rails dla języka Ruby.
- Python on Rails - dyskusja
- Python web developpement: the dilemma
- TurboGears - nowy framework oparty na CheeryPy, Kid, SQLObject i MochiKit (AJAX).
- PEAK - The Python Enterprise Application Kit
- Python Paste - framework implementujacy WSGI. Zobacz art. Python, FastCGI, WSGI, and lighttpd.
- WSGI
- Twisted Matrix - kompletny sieciowy framework z obsługą serwera www, ftp, newsów, ssh, irc. Obsługuje asynchroniczne sockety.
- OSE - generic application framework suitable for constructing general purpose applications, distributed systems and web based services.
- Scarab - open source communcations library implementing protocols, formats, and interfaces for writing distributed applications, with an emphasis on low-end and lightweight implementations.
- pythonweb - web modules, sql snakes itp. Właściwie to nie framework ale nie wiem gdzie to lepiej podpiąć. ;)
artykuły
- Design Patterns in Python
- Python Singleton mixin class
- Hollywod Principle - czyli Dependency Injection, ciekawe WIKI na temat tego wzorca projektowego u zywane m.in. przez Spring (java)
- Software Design Patterns - WIKI o wzorcach projektowych
- GUI (tworzenie aplikacji z interfejsem graficznym)
- wxPython
- Tkinter
- Thinking in Tkinter
- PyGTK
- PyQT (zobacz też binarki dla win32)
- FXPy
- EasyGui
- EasyDialogs
- Grafika
- Python Imaging Library (PIL) - potężna biblioteka graficzna.
- PythonMagic
- ChartDirector
- VPython
- Pyxel
- PyGame
- RAD (Rapid Application Development)
- Eric3 - rozbudowany IDE ze wsparciem bibliotek QT (zobacz też wersję dla win32!)
- Wing IDE - niezły IDE, b. dobrze podpowiada kod (ale jest płatny)
- Eclipse - edytor uniwersalny (obsługuje wiele języków) ale w połączeniu z modułem pydeb, pylint o SQLExploer stanowi niezły IDE do Pythona. Zobacz pluginy do Eclipse.
- TrueStudio - PHP and Python IDE built on Eclipse
- PythonWin - PythonWin wchodzi w skład pakietu rozszerzeń Mark Hammonda o nazwie win32all, obowiązkowa instalka dla użytkowników Windozy. PythonWin oraz win32all (plus więcej dokumentacji) są dostępne w pakiecie ActivePython. PythonWin to nie tylko edytor ale także zintegrowany debugger graficzny.
- SPE - bardzo fajny edytor, ciekawa opcja wielokorowych zakładek. Nowa wersja obsługuje już polskie znaki.
- Boa Constructor - IDE wzorowany na Delphi. Korzysta z biblioteki wxPython. Używaj wersji CVS, bo jest dużo lepsza.
- Eric3 - ładny IDE z dużymi możliwościami, działa tylko pod Linuksem :(
- PIDA - Pida stands for Python Integrated Development Application. It is essentially an IDE, but one that is slightly different in that you supply your own editor. Rather than attempting to write a set of development tools of its own, Pida uses tools that the developer has available.
- PythonCard - wzorowany na macintoshowym HyperCard. Opiera się na bibliotece wxPython. Chyba już prościej się nie da. :)
- PythonWorks - ciekawy IDE, ale niestety komercyjny.
- jEdit + JpyDbg plugin
- VisualWX - wizualne tworzenie komponentów wxWidgets
- wxGlade - wizualne tworzenie komponentów wxWidgets
-
Akceleratory, *.exe itp
- Psyco - akcelerator JIT (Just in Time) podobny w swej idei do JIT dla Javy.
- Pyrex - zezwala na pisanie kodu mieszającego Pythona z typami danych języka C w celu stworzenia rozszerzena do Pythona. Zobacz artykuł pt. Pyrex extends and speeds Python apps.
- modpython - moduł Pythona do Apache'a. Uwaga, dla Webware lepiej korzystać z jego własnego modułu do Apache'a - mod_webkit.
- py2exe - przekształca skrypty Pythona do postaci *.exe + *.dll.
- cx_Freeze - j.w.
- McMillan installer - j.w.
- Squeeze - simple utility which compiles your Python program into a bytecode package, allowing you do distribute Python programs as one or two files.
- Stackless Python - Python bez stosu pamięci.
- Decompyle - dekompilator bytecodu Pythona.
-
WIKI
- Track Project - świetne wiki wspópracujące z SVN i wbudowanym bug trackiem.
- MoinMoin - pythonowy klon WikiClone.
- ZWiki - klon perlowego WikiWikiWeb dla Zope.
-
Bazy danych
- SIG (Special Interest Group) do baz danych
- SQL Relay - bardzo ciekawy projekt, implementuje rozproszony cache, load balancing, ma kod klienta do wielu języków programowania.
- Python DB-API v2.0 - specyfikacja uniwersalnego API, zalecanej abstrakcji łączenia się z bazami danych. W Pythonie wszystkie moduły starają się trzymać tej specyfikacji. Nie ma tu więc takiego bałaganu jak w PHP.
- Python Tutorials: ADO and Python
- MySQLdb - moduł do MySQL
- APE - Adaptable Persistence Engine. Ape, the Adaptable Persistence Engine, adapts Python objects to storage on the filesystem, in relational databases, or practically anywhere else. It combines the advantages of transparent object persistence with arbitrary databases and formats. It is especially designed to work with ZODB, but can work independently of both Zope and ZODB.
- pySQlite - moduł do SQLite
- APSW - Another Python SQLite Wrapper
- psycopg - najlepszu moduł do PostgreSQL. Tutaj masz binarki do win32. Dla formalności wspomnę o innych modułach do Posgresql'a: PyGresQL i pyPgSQL
- adodbapi - moduł do MS SQL 2000. W wypadku używania MSSQL'a polecam korzystać z tej biblioteki, bo inne robią rożne problemy (np. nie kopiują pola blob, albo nie przenoszą poprawnie polskich ogonków) Niestety, wbrew twierdzeniom autora, biblioteka nie ma zaimplementowanego pełnego Python DB-API 2.0, tzn. nie ma cursor.scroll().
- pymmssql - moduł do MS SQL 2000 który podobno implementuje pełne DB API 2.0
- SQLObject - obiektowa obsługa relacyjnych baz danych
- Plikowe bazy danych (nierelacyjne)
- XML
- SIG (Special Interest Group) na temat Pythona i XML
- PyXML - zobacz też http://pirxx.sourceforge.net/
- 4Suite
- Amara XML
- Pyana - świetna biblioteka XML oraz XSLT (pythonowy wrapper do Xalan/Xerces w C++). Umożliwia rozszerzanie i osadzanie w XSLT funkcji Pythona.
- XIST - zaawansowany generator XML/HTML napisany w Pythonie
- LibXML
- elementTree oraz szybszy cElementTree module
- Hosting
- Darmowy, komercyjny oraz komercyjny-specjalizowany hosting
- Free Python and Zope Hosting Directory
- Zope Hosting
- FreeZope.org
- SnakeCharmer - skrypt sprawdzający konfigurację Pythona u providera


