Testing
- Python
unittest
module for documentation on how to use the builtin unittest module
- Nose for executing Python unittests written with the unittest module or other formats
- PyHamcrest for powerful matchers that simplify writing test assertions
- Python
unittest.mock
module for creating mock objects for tests
- Flexmock for an alternative to
unittest.mock
for writing test mocks
Serialization
- Protocol Bufers for cross-languages/cross-platform data serialization
- MessagePack for a cross-platform/cross-language alternative to protocol buffers
- Pickle for Python object serialization (security note: can invoke application code; only use with trusted data)
Parsing
- Python
argparse
module for parsing commandline flags
- PLY for a lexer and parser generator in Python (preferred)
- PyParsing for an alternative, less well-documented parser generator
Networking
- Python
urllib
module for very basic, simple fetching of network resources by URL
- Python
httplib
module for issuing more advanced HTTP requests
- Google App Engine for a Platform as a Service (PaaS) for running Python servers (not a library, but useful)
- Webapp2 for an implementation of the Web Server Gateway Interface (WSGI) for writing servers
- Flask for another WSGI-compliant framework for writing servers
- Bottle for yet another WSGI-compliant server framework
- gRPC for a high-performance remote procedure call (RPC) system based on protocol buffers
- ProtoRPC (NOT RECOMMENDED) an RPC system based on protocol bufers predating gRPC
Numerical Processing
- NumPy for fast vector and matrix math
- Matplotlib for creating plots for visualizing numerical data
- SymPy for a computer algebra system that can solve/simplify symbolically
User Interface
- Jinja2 for template system that you can use to generate / emit HTML
- Mako for an alternative templating engine that can likewise be used for emitting HTML
- Kivy for writing cross-platform user interfaces in Python that run on Android, Mac OS X, Windows, and Linux
- PySide for writing cross-platform desktop GUIs using the Qt framework
Interpreters
- CPython for the standard, official interpreter
- PyPy for an alternative implementation, focused on speed
- Jython for an alternative implementation, focused on interoperation with Java
- Iron Python for an alternative implementation, focused on interoperation with C# / .NET
Packaging Systems and Utilities
- Bazel and Subpar for building many Python files, libraries into a single, self-contained executable file
- Scons for a build system implemented in Python that can be used to run preprocessing / packaging steps
- PyInstaller for distributing a self-contained Python app as a single folder or single file
- Setuptools for the recommended way to distribute Python libraries
- Py2Exe for packaging Python code into a *.exe file for distribution to Windows users
- Py2App for packaging Python code into a *.app folder for distribution to Mac users
Integrated Development Environments
- Cloud 9 for an online IDE (what I'm using for this website, in fact)
- Code Envy for yet another web-based IDE
- Code Anywhere for yet another web-based IDE option
- Nitrious.io for yet another web-based IDE option
- PyCharm for a cross-platform, desktop-based IDE
- Komodo for a cross-platform, desktop-based IDE
Other
- IDEOne an online interpreter for quickly testing small snippets
- Python for Android for using Python to create Android applications
- PyDoc for the builtin documentation generator / extractor
- Sphinx for an alternative documentation generator / extractor