Differences between revisions 60 and 61
Revision 60 as of 2008-08-31 21:20:14
Size: 9520
Editor: 87
Comment:
Revision 61 as of 2008-11-15 14:00:51
Size: 9606
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
The intent of this page is to list some of the most commonly used Python modules, in the hope that it will provide useful recommendations for other programmers (especially beginners). Remember that in addition to the listings below, there are other directories of Python modules - see PublishingPythonModules for details. Another collection of library details can be found on the ["Libraries"] page. The intent of this page is to list some of the most commonly used Python modules, in the hope that it will provide useful recommendations for other programmers (especially beginners). Remember that in addition to the listings below, there are other directories of Python modules - see PublishingPythonModules for details. Another collection of library details can be found on the [[Libraries]] page.
Line 8: Line 8:
 * [:Cryptography:Python and Cryptography]  * [[Cryptography|Python and Cryptography]]
Line 10: Line 10:
 * [http://sqlobject.org/ SQLObject] - Provides an object oriented way of accessing several different database systems  * [[http://sqlobject.org/|SQLObject]] - Provides an object oriented way of accessing several different database systems
Line 14: Line 14:
 * [http://starship.python.net/crew/theller/ctypes/ CTypes] - A package for calling the functions of dlls/shared libraries. Now included with Python 2.5 and up.  * [[http://starship.python.net/crew/theller/ctypes/|CTypes]] - A package for calling the functions of dlls/shared libraries. Now included with Python 2.5 and up.
Line 16: Line 16:
 * [http://www.pygame.org/ PyGame] - Principal wrapper of the SDL library.  * [[http://www.pygame.org/|PyGame]] - Principal wrapper of the SDL library.
Line 22: Line 22:
 * WxPython - wxWidgets bindings for Python supporting PythonCard, ["Wax"] and other frameworks.
 * PyjamasDesktop - Bindings and a framework for the cross-platform [http://webkit.org webkit].
 * WxPython - wxWidgets bindings for Python supporting PythonCard, [[Wax]] and other frameworks.
 * PyjamasDesktop - Bindings and a framework for the cross-platform [[http://webkit.org|webkit]].
Line 26: Line 26:
 * [http://wwwsearch.sourceforge.net/ClientForm/ ClientForm] - "ClientForm is a Python module for handling HTML forms on the client side, useful for parsing HTML forms, filling them in and returning the completed forms to the server. It developed from a port of Gisle Aas' Perl module HTML::Form, from the libwww-perl library, but the interface is not the same." - from the website.
 * [http://formencode.org/ FormEncode]
 * [[http://wwwsearch.sourceforge.net/ClientForm/|ClientForm]] - "ClientForm is a Python module for handling HTML forms on the client side, useful for parsing HTML forms, filling them in and returning the completed forms to the server. It developed from a port of Gisle Aas' Perl module HTML::Form, from the libwww-perl library, but the interface is not the same." - from the website.
 * [[http://formencode.org/|FormEncode]]
Line 29: Line 29:
 * [http://www.crummy.com/software/BeautifulSoup/ Beautiful Soup] - HTML/XML parser designed for quick turnaround projects like screen-scraping, will accept bad markup.
 * [http://www.egenix.com/products/python/mxExperimental/mxTidy/ mxTidy] - HTML cleanup tool. This is a library version of the popular HTML Tidy command-line application which will convert HTML (even badly formatted) into e.g. XHTML.
 * [[http://www.crummy.com/software/BeautifulSoup/|Beautiful Soup]] - HTML/XML parser designed for quick turnaround projects like screen-scraping, will accept bad markup.
 * [[http://www.egenix.com/products/python/mxExperimental/mxTidy/|mxTidy]] - HTML cleanup tool. This is a library version of the popular HTML Tidy command-line application which will convert HTML (even badly formatted) into e.g. XHTML.
Line 32: Line 32:
 * [http://www.sacredchao.net/quodlibet/wiki/Development/Mutagen Mutagen] - Mutagen is a Python module to handle audio metadata. It supports FLAC, M4A, Musepack, MP3, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, and !WavPack audio files. All versions of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level.
 * [http://www.nedbatchelder.com/code/modules/id3reader.html ID3Reader] - "Id3reader.py is a Python module that reads ID3 metadata tags in MP3 files. It can read ID3v1, ID3v2.2, ID3v2.3, or ID3v2.4 tags. It does not write tags at all" (from site). Used in ID3Writer
 * [http://www.comfortableshoe.co.uk/cgi-bin/blosxom.cgi/Home/Python/id3Writer.comments ID3Writer] - Writes ID3 Tags for mp3s (both v1 and v2, as necessary). No Unicode support as of yet. Uses ID3Reader.
 * [http://sourceforge.net/projects/pyid3 PyID3] - ""(Appears to be inactive)""Module for manipulating ID3 informational tags in MP3 audio files. Not as good as ID3Writer, but no issues w/ genre, unlike ID3Writer.
 * [http://www.liquidx.net/pytagger/ pytagger] - tag reader and writer implemented purely in Python. Supports ID3v1, ID3v1.1, ID3v2.2, ID3v2.3 and ID3v2.4
 * [[http://www.sacredchao.net/quodlibet/wiki/Development/Mutagen|Mutagen]] - Mutagen is a Python module to handle audio metadata. It supports FLAC, M4A, Musepack, MP3, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, and !WavPack audio files. All versions of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level.
 * [[http://www.nedbatchelder.com/code/modules/id3reader.html|ID3Reader]] - "Id3reader.py is a Python module that reads ID3 metadata tags in MP3 files. It can read ID3v1, ID3v2.2, ID3v2.3, or ID3v2.4 tags. It does not write tags at all" (from site). Used in ID3Writer
 * [[http://www.comfortableshoe.co.uk/cgi-bin/blosxom.cgi/Home/Python/id3Writer.comments|ID3Writer]] - Writes ID3 Tags for mp3s (both v1 and v2, as necessary). No Unicode support as of yet. Uses ID3Reader.
 * [[http://sourceforge.net/projects/pyid3|PyID3]] - ""(Appears to be inactive)""Module for manipulating ID3 informational tags in MP3 audio files. Not as good as ID3Writer, but no issues w/ genre, unlike ID3Writer.
 * [[http://www.liquidx.net/pytagger/|pytagger]] - tag reader and writer implemented purely in Python. Supports ID3v1, ID3v1.1, ID3v2.2, ID3v2.3 and ID3v2.4
Line 38: Line 38:
 * [http://www.pythonware.com/products/pil/ Python Imaging Library (PIL)] - Supports many file formats, and provides powerful image processing and graphics capabilities.  * [[http://www.pythonware.com/products/pil/|Python Imaging Library (PIL)]] - Supports many file formats, and provides powerful image processing and graphics capabilities.
Line 42: Line 42:
 * [:ScriptingJava:Java scripting]  * [[ScriptingJava|Java scripting]]
Line 45: Line 45:
 * [http://rpyc.wikispaces.com RPyC] - Transparent RPC/distributed-computing framework
 * [http://pyro.sourceforge.net PyRO] - powerful OO RPC
 * [http://code.google.com/p/httplib2/ HTTPLib2] - A comprehensive HTTP client library that supports many features left out of other HTTP libraries, like httplib on the standard library.
 * [[http://rpyc.wikispaces.com|RPyC]] - Transparent RPC/distributed-computing framework
 * [[http://pyro.sourceforge.net|PyRO]] - powerful OO RPC
 * [[http://code.google.com/p/httplib2/|HTTPLib2]] - A comprehensive HTTP client library that supports many features left out of other HTTP libraries, like httplib on the standard library.
Line 49: Line 49:
 * [http://psyco.sourceforge.net/ Psyco] - Psyco can speed up the execution of any Python code (x86 only).
 * [http://pyinstaller.hpcf.upr.edu/cgi-bin/trac.cgi PyInstaller] - Packages Python programs into stand-alone executables, under Windows, Linux and Irix.
 * [[http://psyco.sourceforge.net/|Psyco]] - Psyco can speed up the execution of any Python code (x86 only).
 * [[http://pyinstaller.hpcf.upr.edu/cgi-bin/trac.cgi|PyInstaller]] - Packages Python programs into stand-alone executables, under Windows, Linux and Irix.
Line 52: Line 52:
 * [http://pythonmac.org/wiki/py2app py2app] - Creates stand-alone apps (like py2exe for Mac)
 * [http://pyobjc.sourceforge.net PyObjC] - Bridge between the Python and Objective-C. Most important usage of this is writing Cocoa GUI applications on Mac OS X in pure Python
 * [[http://pythonmac.org/wiki/py2app|py2app]] - Creates stand-alone apps (like py2exe for Mac)
 * [[http://pyobjc.sourceforge.net|PyObjC]] - Bridge between the Python and Objective-C. Most important usage of this is writing Cocoa GUI applications on Mac OS X in pure Python
Line 55: Line 55:
 * [https://sourceforge.net/projects/pywin32/ PyWin32] - Python extensions for Windows.
 * [http://www.py2exe.org/ Py2exe] - Converts python scripts into executable windows programs, able to run without requiring a python installation.
 * [[https://sourceforge.net/projects/pywin32/|PyWin32]] - Python extensions for Windows.
 * [[http://www.py2exe.org/|Py2exe]] - Converts python scripts into executable windows programs, able to run without requiring a python installation.
Line 58: Line 58:
 * [http://code.enthought.com/chaco/ Chaco] - Creates interactive plots
 * [http://gnuplot-py.sourceforge.net/ gnuplot.py] - Based on gnuplot
 * [http://matplotlib.sourceforge.net/ Matplotlib] - Production quality output in a wide variety of formats
 * [http://pyx.sourceforge.net/ PyX] - Postscript and PDF output, (La)TeX integration
 * [http://www.reportlab.org/ ReportLab] includes a charting package
 * [http://home.gna.org/veusz/ Veusz] - Postscript output with a PyQt front end
The SciPy [http://scipy.org/Topical_Software#head-b98ffdb309ccce4e4504a25ea75b5c806e4897b6 topical software] page has a longer list.
 * [[http://code.enthought.com/chaco/|Chaco]] - Creates interactive plots
 * [[http://gnuplot-py.sourceforge.net/|gnuplot.py]] - Based on gnuplot
 * [[http://matplotlib.sourceforge.net/|Matplotlib]] - Production quality output in a wide variety of formats
 * [[http://pyx.sourceforge.net/|PyX]] - Postscript and PDF output, (La)TeX integration
 * [[http://www.reportlab.org/|ReportLab]] includes a charting package
 * [[http://home.gna.org/veusz/|Veusz]] - Postscript output with a PyQt front end
The SciPy [[http://scipy.org/Topical_Software#head-b98ffdb309ccce4e4504a25ea75b5c806e4897b6|topical software]] page has a longer list.
Line 69: Line 69:
 * [http://vpython.org/ Visual Python] - Offers real-time 3D output, is easily usable by novice programmers, excellent for physics.
 * [http://www.scipy.org/ SciPy] - Includes modules for graphics and plotting, optimization, integration, special functions, signal and image processing, genetic algorithms, ODE solvers, and others.
 * [http://www.omegahat.org/RSPython/index.html Python Bindings for R] - R is a well known, open source (GPL 2) statistical package. RSPython provides the ability to access R from python, and vice-versa.
 * ["numpy"]
 * [http://www.vni.com/products/imsl/pyimsl/overview.php PyIMSL] is a collection of Python wrappers to the mathematical and statistical algorithms in the IMSL C Numerical Library. Developers can use Python, PyIMSL and the IMSL C Numerical Library for rapid prototyping.
 * [[http://vpython.org/|Visual Python]] - Offers real-time 3D output, is easily usable by novice programmers, excellent for physics.
 * [[http://www.scipy.org/|SciPy]] - Includes modules for graphics and plotting, optimization, integration, special functions, signal and image processing, genetic algorithms, ODE solvers, and others.
 * [[http://www.omegahat.org/RSPython/index.html|Python Bindings for R]] - R is a well known, open source (GPL 2) statistical package. RSPython provides the ability to access R from python, and vice-versa.
 * [[numpy]]
 * [[http://www.vni.com/products/imsl/pyimsl/overview.php|PyIMSL]] is a collection of Python wrappers to the mathematical and statistical algorithms in the IMSL C Numerical Library. Developers can use Python, PyIMSL and the IMSL C Numerical Library for rapid prototyping.
Line 75: Line 75:
 * [http://www.jorendorff.com/articles/python/path/ Python Path] - Wraps the functionality of the os.path module and provides something more convenient.  * [[http://www.jorendorff.com/articles/python/path/|Python Path]] - Wraps the functionality of the os.path module and provides something more convenient.
Line 77: Line 77:
 * [http://chrisarndt.de/projects/threadpool/ ThreadPool] - Intuitive approach to threads, well-explained.  * [[http://chrisarndt.de/projects/threadpool/|ThreadPool]] - Intuitive approach to threads, well-explained.
Line 80: Line 80:
 * [http://www.djangoproject.com Django] - High-level Python Web framework
 * [http://www.turbogears.org TurboGears] - Rapid web development megaframework.
 * [[http://www.djangoproject.com|Django]] - High-level Python Web framework
 * [[http://www.turbogears.org|TurboGears]] - Rapid web development megaframework.
Line 84: Line 84:
 * [http://www.openflow.it/Openflow openflow] - A workflow engine for Zope 2.
 * [http://code.djangoproject.com/wiki/GoFlow Goflow] - A workflow engine for Django, with same design as openflow.
 * [[http://www.openflow.it/Openflow|openflow]] - A workflow engine for Zope 2.
 * [[http://code.djangoproject.com/wiki/GoFlow|Goflow]] - A workflow engine for Django, with same design as openflow.
Line 87: Line 87:
 * [http://effbot.org/zone/element-index.htm ElementTree] - The Element type is a simple but flexible container object, designed to store hierarchical data structures, such as simplified XML infosets, in memory. --Note: Python 2.5 and up has ElementTree in the Standard Library--
 * [http://uche.ogbuji.net/tech/4suite/amara/manual Amara] - Amara provides tools you can trust to conform with XML standards without losing the familiar Python feel.
 * [[http://effbot.org/zone/element-index.htm|ElementTree]] - The Element type is a simple but flexible container object, designed to store hierarchical data structures, such as simplified XML infosets, in memory. --Note: Python 2.5 and up has ElementTree in the Standard Library--
 * [[http://uche.ogbuji.net/tech/4suite/amara/manual|Amara]] - Amara provides tools you can trust to conform with XML standards without losing the familiar Python feel.

Useful Modules, Packages and Libraries

The intent of this page is to list some of the most commonly used Python modules, in the hope that it will provide useful recommendations for other programmers (especially beginners). Remember that in addition to the listings below, there are other directories of Python modules - see PublishingPythonModules for details. Another collection of library details can be found on the Libraries page.

Be warned that this list is subjective by its very nature - it is only intended as a helpful guide. It is not definitive in any way, nor should it discourage developers from developing their own modules.

Cryptography

Database

Foreign Function Interface

  • CTypes - A package for calling the functions of dlls/shared libraries. Now included with Python 2.5 and up.

Game Development

GUI

  • PyGtk - Bindings for the cross-platform Gtk toolkit.

  • PyQt - Bindings for the cross-platform Qt framework.

  • TkInter - The traditional Python user interface toolkit.

  • WxPython - wxWidgets bindings for Python supporting PythonCard, Wax and other frameworks.

  • PyjamasDesktop - Bindings and a framework for the cross-platform webkit.

  • GUI Programming is, in many cases, a matter of taste. See a more extensive list on the GuiProgramming page.

HTML Forms

  • ClientForm - "ClientForm is a Python module for handling HTML forms on the client side, useful for parsing HTML forms, filling them in and returning the completed forms to the server. It developed from a port of Gisle Aas' Perl module HTML::Form, from the libwww-perl library, but the interface is not the same." - from the website.

  • FormEncode

HTML Parser

  • Beautiful Soup - HTML/XML parser designed for quick turnaround projects like screen-scraping, will accept bad markup.

  • mxTidy - HTML cleanup tool. This is a library version of the popular HTML Tidy command-line application which will convert HTML (even badly formatted) into e.g. XHTML.

ID3 Handling

  • Mutagen - Mutagen is a Python module to handle audio metadata. It supports FLAC, M4A, Musepack, MP3, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, and WavPack audio files. All versions of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level.

  • ID3Reader - "Id3reader.py is a Python module that reads ID3 metadata tags in MP3 files. It can read ID3v1, ID3v2.2, ID3v2.3, or ID3v2.4 tags. It does not write tags at all" (from site). Used in ID3Writer

  • ID3Writer - Writes ID3 Tags for mp3s (both v1 and v2, as necessary). No Unicode support as of yet. Uses ID3Reader.

  • PyID3 - ""(Appears to be inactive)""Module for manipulating ID3 informational tags in MP3 audio files. Not as good as ID3Writer, but no issues w/ genre, unlike ID3Writer.

  • pytagger - tag reader and writer implemented purely in Python. Supports ID3v1, ID3v1.1, ID3v2.2, ID3v2.3 and ID3v2.4

Image Manipulation

Indexing and Searching

Java

Networking

  • TwistedMatrix - Event-driven networking framework

  • RPyC - Transparent RPC/distributed-computing framework

  • PyRO - powerful OO RPC

  • HTTPLib2 - A comprehensive HTTP client library that supports many features left out of other HTTP libraries, like httplib on the standard library.

Platform Specific

  • Psyco - Psyco can speed up the execution of any Python code (x86 only).

  • PyInstaller - Packages Python programs into stand-alone executables, under Windows, Linux and Irix.

Mac

  • py2app - Creates stand-alone apps (like py2exe for Mac)

  • PyObjC - Bridge between the Python and Objective-C. Most important usage of this is writing Cocoa GUI applications on Mac OS X in pure Python

Windows

  • PyWin32 - Python extensions for Windows.

  • Py2exe - Converts python scripts into executable windows programs, able to run without requiring a python installation.

Plotting

  • Chaco - Creates interactive plots

  • gnuplot.py - Based on gnuplot

  • Matplotlib - Production quality output in a wide variety of formats

  • PyX - Postscript and PDF output, (La)TeX integration

  • ReportLab includes a charting package

  • Veusz - Postscript output with a PyQt front end

The SciPy topical software page has a longer list.

RDF Processing

  • See RdfLibraries for a list of available RDF processing solutions.

Scientific

  • Visual Python - Offers real-time 3D output, is easily usable by novice programmers, excellent for physics.

  • SciPy - Includes modules for graphics and plotting, optimization, integration, special functions, signal and image processing, genetic algorithms, ODE solvers, and others.

  • Python Bindings for R - R is a well known, open source (GPL 2) statistical package. RSPython provides the ability to access R from python, and vice-versa.

  • numpy

  • PyIMSL is a collection of Python wrappers to the mathematical and statistical algorithms in the IMSL C Numerical Library. Developers can use Python, PyIMSL and the IMSL C Numerical Library for rapid prototyping.

Standard Library Enhancements

  • Python Path - Wraps the functionality of the os.path module and provides something more convenient.

Threading

  • ThreadPool - Intuitive approach to threads, well-explained.

  • See the ParallelProcessing page for other multiprocessing or parallel processing approaches.

Web Development

Workflow

  • openflow - A workflow engine for Zope 2.

  • Goflow - A workflow engine for Django, with same design as openflow.

XML Processing

  • ElementTree - The Element type is a simple but flexible container object, designed to store hierarchical data structures, such as simplified XML infosets, in memory. --Note: Python 2.5 and up has ElementTree in the Standard Library--

  • Amara - Amara provides tools you can trust to conform with XML standards without losing the familiar Python feel.

  • PythonXml provides a list of available XML processing solutions.

Editorial Notes

Please avoid listing modules where...

  • You are one of the developers (and you just want to promote your work somewhere).
  • The modules in question do not have widespread approval or usage.

If you do want to make people aware of a module, package or library (perhaps your own), consider submitting it to one or more of the directories mentioned in PublishingPythonModules, perhaps also adding it to the topic-specific part of this site (eg. WebProgramming, GuiProgramming).

Do list modules that:

  • Get recommended often in the Tutor or comp.lang.python lists

Please provide a short description for each module. Try to put each module in the category that matches its "main" audience, since a module might fall into a number of categories.

UsefulModules (last edited 2018-08-20 14:00:38 by PySimpleGUI)

Unable to edit the page? See the FrontPage for instructions.