A fantastic tool to generate requirements.txt for your Python project, and more than that.

  • Generating requirements.txt for Python project.
    • Handling the difference between different Python versions.
    • Jupyter notebook (*.ipynb) support.
    • Including the import statements from exec/eval, doctest of docstring, etc.
  • Searching packages by import name.
  • Checking the latest versions for Python project.

NOTE: Pipenv or other tools is recommended for improving your development flow.



pigar can run on Python 2.7.+ and 3.2+.

To install it with pip, use:

[sudo] pip install pigar

To install it with conda, use:

conda install -c conda-forge pigar

To get the newest code from GitHub:

pip install git+https://github.com/damnever/[email protected][master or other branch] --upgrade


  • pigar can consider all kinds of complicated situations. For example, this project has py2_requirements.txt and py3_requirements.txt for different Python versions(see the above GIF).

    # Generate requirements.txt for current directory.
    $ pigar
    # Generating requirements.txt for given directory in given file.
    $ pigar -p ../dev-requirements.txt -P ../

    pigar can list all files which referenced the package(the line numbers for Jupyter notebook may be a bit confusing), for example:

    # project/foo.py: 2,3
    # project/bar/baz.py: 2,7,8,9
    foobar == 3.3.3

    If the requirements.txt is overwritten, pigar will show the difference between the old and the new.

  • If you do not know the import name that belongs to a specific package (more generally, does Import Error: xxx drive you crazy?), such as bs4 which may come from beautifulsoup4 or MySQLdb which could come from MySQL_Python, try searching for it:

    $ pigar -s bs4 MySQLdb
  • Checking for the latest version:

    # Specify a requirements file.
    $ pigar -c ./requirements.txt
    # Or, you can let pigar searching all *requirements.txt in the current directory
    # level by itself. If not found, pigar will generate a new requirements.txt
    # for the current project, then check for the latest versions.
    $ pigar -c
  • More:

    pigar --help