Using Pip and Requirements.txt to Install From the Head of Github Branch
The Web Dev Zone is brought to you in partnership with Mendix. Discover how IT departments looking for ways to keep up with demand for business apps has caused a new breed of developers to surface - the Rapid Application Developer.
The python package installer pip can be used to install directly from Github, like so:
$ pip install git+git://github.com/tangentlabs/django-oscar.git#egg=django-oscar
This will install from the HEAD of the master branch. However, when you use pip freeze to export your dependencies (usually to a requirements.txt file), pip will fix the reference to a specific commit by including its ID within the URL:
$ pip freeze | grep oscar -e git://github.com/tangentlabs/django-oscar.git@d636b803d98cd1d3edd01821d4fb2a01ce215ee4#egg=django_oscar-dev
Hence running pip install -r requirements.txt will not pick any commits after d636b803 until requirements.txt is updated.
This isn't always the desired behaviour; in some circumstances, you would prefer for pip install -r requirements.txt to always install the latest version from Github.
Simply delete the commit ID from URL - that is, change:
This can be done by hand once you've used
pip freeze > requirements.txt
to create your requirements file, or by using sed:
$ pip freeze | sed 's/@[a-z0-9]\+//' > requirements.txt
The text between @ and # in the github URL specifies the commit to install from. Rather than a commit ID, a branch or tag name can be used also. Hence:
pip install -e git://firstname.lastname@example.org#egg=django-oscar
will install the 0.1 tag, while:
pip install -e git://github.com/tangentlabs/django-oscar.git@releases/0.1#egg=django-oscar
will install from the HEAD of the releases/0.1 branch.