<commit_before>============
Installation
============

The most direct way to install Fabric is to obtain the source code and run
``python setup.py install``. This method works for both release and development
versions of the code, and requires nothing but a basic Python installation.

.. note::

    If you've obtained the Fabric source via source control and plan on
    updating your checkout in the future, we highly suggest using ``python
    setup.py develop`` instead -- it will use symbolic links instead of file
    copies, ensuring that imports of the library or use of the command-line
    tool will always refer to your checkout. 

Dependencies
============

In order to install Fabric, you will need three primary pieces of
software: the Python programming language, the Paramiko SSH library, and
the PyCrypto cryptography library (a dependency of Paramiko.) Please read
on for important details on each dependency -- there are a few gotchas.

Python
------

Fabric requires `Python <http://python.org>`_ version 2.5 or 2.6. Some caveats
and notes about other Python versions:

* We are not planning on supporting **Python 2.4** given its age and the number
  of useful tools in Python 2.5 such as context managers and new modules.
  That said, the actual amount of 2.5-specific functionality is not
  prohibitively large, and we would link to -- but not support -- a third-party
  2.4-compatible fork. (No such fork exists at this time, to our knowledge.)
* Fabric has not yet been tested on **Python 3.x** and is thus likely to be
  incompatible with that line of development. However, we try to be at least
  somewhat forward-looking (e.g. using ``print()`` instead of ``print``) and
  will definitely be porting to 3.x in the future once our dependencies and the
  rest of the ecosystem does so as well.
* A bug in **Python 2.5.0 and 2.5.1** causes errors in
  `fabric.contrib.files.upload_template` due to its combination of context
  managers and ``tempfile.NamedTemporaryFile``. The rest of Fabric will work
  fine on these Python versions, but be aware of this conflict if you do use
  `upload_template` and are running on something older than Python 2.5.2.

.. _paramiko-warning:

Paramiko
--------

`Paramiko <http://www.lag.net/paramiko/>`_ is a Python implementation of the
SSH protocol suite, and is what Fabric builds upon for its networking support.
At this time, **only Paramiko version 1.7.4 is supported!** A more recent
version, 1.7.5, is on PyPI, but contains `a serious bug
<https://bugs.launchpad.net/paramiko/+bug/413850>`_ that causes effectively
random (albeit uncommon) SSHException errors.

Furthermore, because 1.7.5 is the only version currently uploaded to PyPI (the
source of ``easy_install`` and ``pip`` installs) we do **not** recommend you
use those tools to install Fabric until you have installed Paramiko and
PyCrypto by hand.

Paramiko 1.7.4 may be downloaded from Paramiko's `old releases directory
<http://www.lag.net/paramiko/download/>`_ and installed by unpacking and<commit_msg>Re #54, remove Python 2.5.x compat note<commit_after>============
Installation
============

The most direct way to install Fabric is to obtain the source code and run
``python setup.py install``. This method works for both release and development
versions of the code, and requires nothing but a basic Python installation.

.. note::

    If you've obtained the Fabric source via source control and plan on
    updating your checkout in the future, we highly suggest using ``python
    setup.py develop`` instead -- it will use symbolic links instead of file
    copies, ensuring that imports of the library or use of the command-line
    tool will always refer to your checkout. 

Dependencies
============

In order to install Fabric, you will need three primary pieces of
software: the Python programming language, the Paramiko SSH library, and
the PyCrypto cryptography library (a dependency of Paramiko.) Please read
on for important details on each dependency -- there are a few gotchas.

Python
------

Fabric requires `Python <http://python.org>`_ version 2.5 or 2.6. Some caveats
and notes about other Python versions:

* We are not planning on supporting **Python 2.4** given its age and the number
  of useful tools in Python 2.5 such as context managers and new modules.
  That said, the actual amount of 2.5-specific functionality is not
  prohibitively large, and we would link to -- but not support -- a third-party
  2.4-compatible fork. (No such fork exists at this time, to our knowledge.)
* Fabric has not yet been tested on **Python 3.x** and is thus likely to be
  incompatible with that line of development. However, we try to be at least
  somewhat forward-looking (e.g. using ``print()`` instead of ``print``) and
  will definitely be porting to 3.x in the future once our dependencies and the
  rest of the ecosystem does so as well.

.. _paramiko-warning:

Paramiko
--------

`Paramiko <http://www.lag.net/paramiko/>`_ is a Python implementation of the
SSH protocol suite, and is what Fabric builds upon for its networking support.
At this time, **only Paramiko version 1.7.4 is supported!** A more recent
version, 1.7.5, is on PyPI, but contains `a serious bug
<https://bugs.launchpad.net/paramiko/+bug/413850>`_ that causes effectively
random (albeit uncommon) SSHException errors.

Furthermore, because 1.7.5 is the only version currently uploaded to PyPI (the
source of ``easy_install`` and ``pip`` installs) we do **not** recommend you
use those tools to install Fabric until you have installed Paramiko and
PyCrypto by hand.

Paramiko 1.7.4 may be downloaded from Paramiko's `old releases directory
<http://www.lag.net/paramiko/download/>`_ and installed by unpacking and
{'fraction_non_alphanumeric': 0.0843205574912892, 'fraction_numerical': 0.013414634146341463, 'mean_word_length': 3.996518711923412, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 2, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2091382', 'n_tokens_mistral': 1587, 'n_tokens_neox': 1506, 'n_words': 824}