# Installing Optional Dependencies

This document describes the optional dependencies that Twisted supports. The dependencies are python packages that Twisted’s developers have found useful either for developing Twisted itself or for developing Twisted applications.

The intended audience of this document is someone who is familiar with installing optional dependencies using pip.

If you are unfamiliar with the installation of optional dependencies, the python packaging tutorial can show you how. For a deeper explanation of what optional dependencies are and how they are declared, please see the setuptools documentation.

The following optional dependencies are supported:

- dev - packages that aid in the development of Twisted itself.

  - pyflakes

  - twisted-dev-tools

  - python-subunit

  - Sphinx

  - TwistedChecker, only available on python2

  - pydoctor, only available on python2

- tls - packages that are needed to work with TLS.

  - pyOpenSSL

  - service_identity

  - idna

- conch - packages for working with conch/SSH.

  - pyasn1

  - cryptography

- conch_nacl - conch options and PyNaCl to support Ed25519 keys on systems with OpenSSL < 1.1.1b.

- soap - the SOAPpy package to work with SOAP.

- serial - the pyserial package to work with serial data.

- all_non_platform - installs tls, conch, soap, and serial options.

- macos_platform - all_non_platform options and pyobjc to work with Objective-C apis.

- windows_platform - all_non_platform options and pywin32 to work with Windows’s apis.

- http2 - packages needed for http2 support.

  - h2

  - priority

- contextvars - the contextvars backport package to provide contextvars support for Python versions before 3.7.