The requirements file format

The requirements file is a way to get pip to install specific packages to make up an environment. This document describes that format. To read about when you should use requirement files, see Requirements Files.

Each line of the requirements file indicates something to be installed. For example:


tells pip to install the 3.0 version of MyPackage.

You can also install a package in an “editable” form. This puts the source code into src/distname (making the name lower case) and runs python develop on the package. To indicate editable, use -e, like:

-e svn+

The #egg=MyProject part is important, because while you can install simply given the svn location, the project name is useful in other places.

If you need to give pip (and by association easy_install) hints about where to find a package, you can use the -f (--find-links) option, like:

$ pip -f MyPackage==3.0

Pip will then look for a link at that matches version 3.0 of MyPackage – the link should be like MyPackage-3.0.tar.gz.

And if you want to install from a tarball or zip file with a direct link, you don’t need -f option, you just need to pass the absolute url, like:

$ pip install

Version Control

Right now pip knows of the following major version control systems:


Pip supports the URL schemes svn, svn+http, svn+https, svn+ssh. You can also give specific revisions to an SVN URL, like:

-e svn+

which will check out revision 2019. @{20080101} would also check out the revision from 2008-01-01. You can only check out specific revisions using -e svn+....


Pip currently supports cloning over git, git+http and git+ssh:

-e git://
-e git+
-e git+ssh://

Passing branch names, a commit hash or a tag name is also possible:

-e git://
-e git://
-e git://


The supported schemes are: hg+http, hg+https, hg+static-http and hg+ssh:

-e hg+
-e hg+
-e hg+ssh://

You can also specify a revision number, a revision hash, a tag name or a local branch name:

-e hg+
-e hg+
-e hg+
-e hg+


Pip supports Bazaar using the bzr+http, bzr+https, bzr+ssh, bzr+sftp and bzr+ftp schemes:

-e bzr+
-e bzr+s
-e bzr+ssh://
-e bzr+

Tags or revisions can be installed like this:

-e bzr+
-e bzr+

Recursive Requirements

If you wish, you can also refer to other requirements files, like:

-r Pylons-requirements.txt

This gives you a way of abstracting out sets of requirements. This isn’t, however, very friendly with frozen requirements, as everything in Pylons-requirements.txt will show up in your frozen file.

Table Of Contents

Previous topic

News for pip

Next topic