============
Python Setup
============
First things first: we need our Python environment in ship-shape.
Pyramid encourages standard Python development practices (virtual
environments, packaging tools, logging, etc.) so let's get our working
area in place.
.. note::
This tutorial is aimed at Python 2.7. It also works with
Python 3.3.
*This step has most likely been performed already on the CCDC computers.*
Prequisites
===========
Modern Python development means two tools to add to the standard
Python installation: packaging and virtual environments.
Python's tools for installing packages is undergoing rapid change. For
this tutorial, we will install the latest version of
`setuptools `_. This gives us
the ``easy_install`` command-line tool for installing Python packages.
Presuming you have Python on your ``PATH``:
.. code-block:: bash
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
We now have an ``easy_install`` command that we can use to install
``virtualenv``:
.. code-block:: bash
$ easy_install virtualenv
Making a Virtual Environment
============================
Developing in isolation helps us ensure what we are learning doesn't
conflict with any packages installed from other work on the machine.
*Virtual environments* let us do just this.
Presuming you have made a tutorial area at some location (referenced as
``your/tutorial/directory`` below):
.. code-block:: bash
$ cd your/tutorial/directory
$ virtualenv env27
$ source env27/bin/activate
(env27)$ which python2.7
Once you do this, your path will be setup to point at the ``bin`` of
your virtual environment. Your prompt will also change, as noted above.
.. note::
This tutorial presumes you are working in a command-line shell
which has performed the ``source env27/bin/activate``. If you
close that shell, or open a new one, you will need to re-perform
that command.
Discussion
==========
The modern world of Python packaging eschews ``easy_install`` in favor
of ``pip``, a more-recent and maintained packaging tool. Why doesn't
this tutorial use it?
- ``pip`` is only gradually getting the ability to install Windows
binaries. ``easy_install`` has been able to do this for years.
- Until recently, ``pip`` has not been able to use "namespace
packages." As the ``pip`` support for this stabilizes,
we can switch to using ``pip``.
- You have to use ``easy_install`` to get ``pip`` installed, so why not
just stick with ``easy_install``.
Python 3.3 has a `built-in story for virtual
environments `_. This
eliminates the requirement for installing ``virtualenv``. Instead,
Python 3.3 provides the ``pyvenv`` command for creating virtual
environments.