Search code examples
pythonpackagepippypirequirements.txt

Check if requirements are up to date


I'm using pip requirements files for keeping my dependency list.

I also try to follow best practices for managing dependencies and provide precise package versions inside the requirements file. For example:

Django==1.5.1
lxml==3.0

The question is: Is there a way to tell that there are any newer package versions available in the Python Package Index for packages listed inside requirements.txt?

For this particular example, currently latest available versions are 1.6.2 and 3.3.4 for Django and lxml respectively.

I've tried pip install --upgrade -r requirements.txt, but it says that all is up-to-date:

$ pip install --upgrade -r requirements.txt 
Requirement already up-to-date: Django==1.5.1 ...

Note that at this point I don't want to run an actual upgrade - I just want to see if there are any updates available.


Solution

  • Pip has this functionality built-in. Assuming that you're inside your virtualenv type:

    $ pip list --outdated
    psycopg2 (Current: 2.5.1 Latest: 2.5.2)
    requests (Current: 2.2.0 Latest: 2.2.1)
    
    $ pip install -U psycopg2 requests
    

    After that new versions of psycopg2 and requests will be downloaded and installed. Then:

    $ pip freeze > requirements.txt
    

    And you are done. This is not one command but the advantage is that you don't need any external dependencies.