py.test/pylib compat/install info in a nutshell

PyPI Pyckage name: "py", see PyPI project page for latest version

Installers: easy_install and pip, setuptools or Distribute

Pythons: 2.4, 2.5, 2.6, 3.0, 3.1, Jython-2.5.1, PyPy-1.1

Operating systems: Linux, Windows and OSX + probably many others

Best practise: install tool and dependencies virtually

It is recommended to work with virtual environments (e.g. virtualenv or buildout based) and use easy_install (or pip) for installing py.test/pylib and any dependencies you need to run your tests. Local virtual Python environments (as opposed to system-wide "global" environments) make for a more reproducible and reliable test environment.

Note: as of November 2009 pytest/pylib 1.1 RPMs and DEB packages are not available. If you want to easy_install the newest py.test and pylib do everyone a favour and uninstall older versions from the global system e.g. like this on Ubuntu:

sudo apt-get remove --purge python-codespeak-lib

using easy_install (from setuptools or Distribute)

Both Distribute and setuptools provide the easy_install installation tool. While setuptools should work ok with Python2 interpreters, Distribute also works with Python3 and it avoids some issues on Windows. In both cases you can open a command line window and then type:

easy_install -U py

to install the latest release of the py lib and py.test. The -U switch will trigger an upgrade if you already have an older version installed.

If you now type:

py.test --version

you should see the version number and the import location of the tool. Maybe you want to head on with the quickstart now?

Troubleshooting

On Linux: If easy_install fails because it needs to run as the superuser you are trying to install things globally and need to put sudo in front of the command.

On Windows: If "easy_install" or "py.test" are not found please see here: How do i run a Python program under Windows?

Working from version control or a tarball

To follow development or start experiments, checkout the complete code and documentation source with mercurial:

hg clone https://bitbucket.org/hpk42/py-trunk/

Development usually takes place on the 'trunk' branch.

You can also go to the python package index and download and unpack a TAR file:

http://pypi.python.org/pypi/py/

activating a checkout with setuptools

With a working Distribute or setuptools installation you can type:

python setup.py develop

in order to work inline with the tools and the lib of your checkout.

directly use a checkout or tarball

Once you got yourself a checkout or tarball it is usually a good idea to add the parent directory of the py package directory to your PYTHONPATH and py/bin or py\bin\win32 to your system wide PATH settings. There are helper scripts that set PYTHONPATH and PATH on your system:

on windows execute:

# inside autoexec.bat or shell startup
c:\\path\to\checkout\bin\env.cmd

on linux/OSX add this to your shell initialization:

# inside .bashrc
eval `python ~/path/to/checkout/bin/env.py`

both of which which will get you good settings for PYTHONPATH and PATH.

If you install py.test this way you can easily hg pull && hg up your checkout to follow the development tree.

note: scripts look for "nearby" py-lib

Note that all command line scripts will look for "nearby" py libs, so if you have a layout like this:

mypkg/
    subpkg1/
        tests/
    tests/
py/

issuing py.test subpkg1 will use the py lib from that projects root directory. Giving the state of Python packaging there can be confusion in which case issuing:

py.test --version

tells you both version and import location of the tool.