Skip to content
Switch branches/tags
Go to file


Failed to load latest commit information.


Quickly and exactly synchronize a large python project's virtualenv with its requirements.

PyPI version Documentation

Please see for the complete documentation.

How to Contribute

  1. Fork this repository on github:

  2. Clone it:

  3. Make a feature branch for your changes:

     git remote add upstream
     git fetch upstream
     git checkout upstream/master -b my-feature-branch
  4. Make sure the test suite works before you start:

     make test
  5. Commit patches:

  6. Push to github: git pull && git push origin

  7. Send a pull request:

Running tests:

Run a particular test:

py.test tests/functional/

See all output from a test:

py.test -s -k downgrade

Check coverage of a single test:

./test tests/functional/


To develop and run tests suites on a devbox, make sure to:

  1. Python 3.6.0 on a xenial devbox breaks coverage. Use a bionic devbox instead.

  2. Override pip.conf to use public pypi. Don't forget to delete it after you're done!

$ cat ~/.pip/pip.conf
index-url =
  1. sudo apt-get install pypy-dev so TOXENV=pypy doesn't fail spectacularly