Search code examples
pythonpipfreeze

How to retrieve pip requirements (freeze) within Python?


I posted this question on the git issue tracker: https://github.com/pypa/pip/issues/2969

Can we have some manner of calling pip freeze/list within python, i.e. not a shell context?

I want to be able to import pip and do something like requirements = pip.freeze(). Calling pip.main(['freeze']) writes to stdout, doesn't return str values.


Solution

  • There's a pip.operation.freeze in newer releases (>1.x):

    try: from pip._internal.operations import freeze
    except ImportError: # pip < 10.0
        from pip.operations import freeze
    
    pkgs = freeze.freeze()
    for pkg in pkgs: print(pkg)
    

    Output is, as expected:

    amqp==1.4.6
    anyjson==0.3.3
    billiard==3.3.0.20
    defusedxml==0.4.1
    Django==1.8.1
    django-picklefield==0.3.1
    docutils==0.12
    ... etc