Michael Safyan

Resources

Python Resources

Tutorials

Fundamentals

Advanced Features

Reference

General

Language

Standard Library

Libraries

General

Logging

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)

Parellelization

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

Image Processing

Game Development

Tools

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
Disclaimer

My statements are my own and do not necessarily reflect the opinions of Google Inc.