If you're on an operating system for which no Twisted binary packages are available, you'll need to install from source. Don't worry, though; as source installs go, Python packages are among the easiest you'll find.
1.2.1. How Do I Do That?
First, download the full "Sumo" source package for Twisted (choosing the version with documentation) from http://twistedmatrix.com/projects/core/. The Sumo package is the core of Twisted, plus a number of bundled modules from other projects developed under the Twisted umbrella; you'll need the modules in the Sumo package to run most of the examples in this book. Once you've downloaded the package, extract it to a working directory:
$ tar -xjvf ~/downloads/TwistedSumo-2005-03-22.tar.bz2 TwistedSumo-2005-03-22/ TwistedSumo-2005-03-22/bin/ ... TwistedSumo-2005-03-22/README TwistedSumo-2005-03-22/LICENSE TwistedSumo-2005-03-22/setup.py TwistedSumo-2005-03-22/ZopeInterface-3.0.1.tgz
Next, enter the TwistedSumo-version directory. Twisted depends on the zope.interface package, which is bundled in the Twisted Sumo distribution. Unzip the ZopeInterface tarball:
$ tar -xzvf ZopeInterface-3.0.1.tgz ZopeInterface-3.0.1/ ZopeInterface-3.0.1/Support/ ZopeInterface-3.0.1/Support/zpkgsetup/ ZopeInterface-3.0.1/Support/zpkgsetup/publication.py ... ZopeInterface-3.0.1/setup.py ZopeInterface-3.0.1/setup.cfg ZopeInterface-3.0.1/MANIFEST
Enter the ZopeInterface- directory, and run the command python setup.py install. This command will build and install the zope.interface package in your python installation's lib/site-packages/twisted directory. You'll need to have administrative/root permissions to do this, so use su or sudo to increase your permission level if necessary:
$ cd ZopeInterface-3.0.1 $ python setup.py install running install running build running build_py running build_ext building 'zope.interface._zope_interface_coptimizations' extension ... running install_lib copying build/lib.linux-i686-2.4/zope/interface/_zope_interface_coptimizations.so -> /usr/lib/python2.4/site-packages/zope/interface writing byte-compilation script '/tmp/tmpdY9dA9.py' /usr/bin/python -O /tmp/tmpdY9dA9.py removing /tmp/tmpdY9dA9.py
Once zope.interface is installed, you're ready to install Twisted. In this TwistedSumo- directory, run the command python setup.py install. The command will compile the Twisted C modules and install Twisted:
$ cd TwistedSumo-2005-03-22 $ python setup.py install Password: running install running build running build_py ... running install_data
Congratulationsyou've installed Twisted! You can make sure the installation worked by importing the Twisted package from an interactive Python prompt:
$ python Python 2.3 (#1, Sep 13 2003, 00:49:11) [GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import twisted >>>
If the import twisted statement runs with no errors, you have a working Twisted install.
Next, download the latest release of PyOpenSSL from http://pyopenssl.sourceforge.net. PyOpenSSL works on top of the OpenSSL library, so you'll need to make sure you have OpenSSL installed first. Mac OS X comes with OpenSSL installed, along with its header files, and all Linux and BSD distributions should have a package available (if not installed by default).
To install PyOpenSSL, follow the same steps you did when installing Twisted. First, extract the contents of the downloaded file:
$ tar -zxvf pyOpenSSL-0.6.tar.gz pyOpenSSL-0.6/ pyOpenSSL-0.6/doc/ pyOpenSSL-0.6/doc/html/ ... pyOpenSSL-0.6/_ _init_ _.py pyOpenSSL-0.6/ChangeLog pyOpenSSL-0.6/COPYING pyOpenSSL-0.6/version.py
Next, switch to the PyOpenSSL directory and run python setup.py install as root or an administrative user:
$ cd pyOpenSSL-0.6 $ python setup.py install running install running build running build_py creating build ... byte-compiling /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/ OpenSSL/__init__.py to _ _init_ _.pyc byte-compiling /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/ OpenSSL/version.py to version.pyc
When the installation is complete, test to confirm that the OpenSSL package is now available, and that Twisted is making use of it in its internet.ssl module:
$ python Python 2.3 (#1, Sep 13 2003, 00:49:11) [GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import OpenSSL >>> import twisted.internet.ssl >>> twisted.internet.ssl.SSL
If you don't see any errors, you've successfully added SSL support to your Twisted installation.
The final package to install is PyCrypto. PyCrypto, the Python Cryptography Toolkit, is a package developed by A. M. Kuchling that contains implementations of many cryptographic functions. Twisted uses PyCrypto to support SSH connections.
Start by downloading PyCrypto from http://www.amk.ca/python/code/crypto.html. Then extract the package:
$ tar -xzvf pycrypto-2.0.tar.gz pycrypto-2.0/ pycrypto-2.0/_ _init_ _.py pycrypto-2.0/ACKS pycrypto-2.0/ChangeLog ... pycrypto-2.0/Util/test/prime_speed.py pycrypto-2.0/Util/test.py
Run the now-familiar python setup.py install (as root or an administrative user) in the PyCrypto directory:
$ cd pycrypto-2.0 $ python setup.py install running install running build running build_py creating build ... byte-compiling /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/ Crypto/Util/RFC1751.py to RFC1751.pyc byte-compiling /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/ Crypto/Util/test.py to test.pyc
To verify that the package installed correctly, import it from an interactive Python prompt. You can also make sure Twisted's twisted.conch.ssh.transport module is now using PyCrypto's RSA implementation:
$ python Python 2.3 (#1, Sep 13 2003, 00:49:11) [GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import Crypto >>> import twisted.conch.ssh.transport >>> twisted.conch.ssh.transport.RSA
And that's it! You've installed PyCrypto from source. At this point you have a complete, working Twisted installation, including support for SSL and SSH connections.