Skip to main content

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

Project description

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

Note that pigar is not a package management tool.

You can find more information on GitHub.

Change Logs

Version 2.1.1 (2023.06.30)

See what’s changed in detail between v2.1.0 and v2.1.1.

Version 2.1.0 (2023.06.22)

This release includes an experimental feature called 'requirement-annotations' that allows you to declare implicit packages/distributions by using comments.

See what’s changed in detail between v2.0.8 and v2.1.0.

Version 2.0.8 (2023.06.11)

See what’s changed in detail between v2.0.7 and v2.0.8.

Version 2.0.7 (2023.05.30)

See what’s changed in detail between v2.0.6 and v2.0.7.

Version 2.0.6 (2023.03.06)

See what’s changed in detail between v2.0.5 and v2.0.6.

Version 2.0.5 (2023.01.12)

See what’s changed in detail between v2.0.4 and v2.0.5.

Version 2.0.4 (2022.12.22)

See what’s changed in detail between v2.0.3 and v2.0.4.

Version 2.0.3 (2022.12.15)

See what’s changed in detail between v2.0.2 and v2.0.3.

Version 2.0.2 (2022.12.04)

  • Ignore absolute path in distributions' installed files.
  • Ignore vcs exception when parsing information for EggInfoDistribution.
  • Sort searched results, print unknown if version not found.
  • Fix dirty records in the index database.

Version 2.0.1 (2022.12.03)

Make absolute import more reliable by searching parent directory as well.

Version 2.0.0 (2022.12.02)

This version has changed a lot of things, most of them are BREAKING CHANGEs!

  • Dropped support for Python versions older than 3.7.
  • Redesigned the command line interface.
    • pigar generate to generate requirements.txt.
    • pigar search to search packages/distributions by the top level module names.
    • pigar check to check the latest versions of requirements.
    • pigar -h to explore more.
    • pigar accepts a prefix for a command, such as pigar gen, pigar c.
  • Refactored a lot of code and interfaces.
  • Vendoring the pip to access more sophisticated utilities(pip named it's module as _internal so vendoring technology is introduced).
    • Fixed a lot of issues when parsing the requirements file, e.g. #113.
    • Fixed the issues for editable requirements, e.g. #60.
  • Tweaked some default actions and introduced more options for better user experience.
    • pigar will ask user to choose the right packages/distributions if pigar has found multiple packages/distributions for the same module names. With --auto-select enabled, pigar will guess the best matched one or choose all possible packages/distributions automatically.
    • Added an option --dry-run which allows pigar to not write a requirements.txt file, just print it.
    • Added an option --follow-symbolic-links/--dont-follow-symbolic-links to let user decide whether to follow the symbolic links, fixed #89.
    • Added an option -i/--index-url to allow the custom URL of the Python Package Index, fixed #52.
    • Removed the spaces from requirements specifier, fixed #86.
    • Added an option --show-differences/--dont-show-differences to enable or disable showing the differences when the requirements file is overwritten.
  • Introduced asyncio to synchronize distributions' metadata with the PyPI, the process is much faster now.
  • Refactored the code to make the index database more reliable.
    • Add unique contstraints to avoid duplicate records, fixed #119.
    • Store versions in the database to do incremental index synchronization.

Version 1.0.2 (2022.11.12)

  • Fix requirements list in setup.py #122.

Version 1.0.1 (2022.11.12)

  • Support *.ipynb magics and shell command, fixed #87. See #102, #117, #118 for details.
  • Parse requirements file with the more sophisticated utility, fixed #48, #113. See #115 for details.
  • Fixed #99, continue if a local package isn't exists. See #107 for details.
  • Fixed too many values to unpack error when parsing git config. See #97 for details.

Version 1.0.0 (2022.06.22)

  • BREAKING CHANGE: Disable the comments which contain filenames and line numbers by default, use --with-referenced-comments to enable this feature.
  • Skip if local package (edit-mode project) not found, fixed #99.

Version 0.10.0 (2020.03.14)

  • Refactored the main logic, the interface has been changed, be careful if you are using pigar as a library.
  • Handle the HTTP error, fixed #61.
  • Ignore local packages quietly, fixed #47, #58 and #65.

Thank @bganglia for the following contributions:

  • Add Jupyter notebook(.ipynb) support, refer to #69.
  • Option to turn off filenames and line numbers in requirements.txt, refer to #65.
  • Fix check path, refer to #64.
  • And more.

Version 0.9.2 (2019.04.11)

  • Make version comparison operator configurable, fixed #37

Version 0.9.1 (2019.02.17)

  • Fixed potential security vulnerabilities by updating requests.
  • Fixed #49

Version 0.9.0 (2018.08.12)

  • Reuse connections.
  • Update database.
  • Fixed #44

Version 0.7.2 (2018.04.24)

Version 0.7.1 (2017.11.07)

Version 0.7.0 (2017.07.03)

  • Fixed the .egg suffix which caused by sudo pip install ... on Ubuntu.
  • Workaround for special packages, such as #29

Version 0.6.10 (2016.06.17)

  • Fixed #26
  • Fixed relative import issue.

Version 0.6.9 (2016.05.08)

  • Fixed ImportError.

Version 0.6.8 (2016.05.08)

  • Supported flask extension.
  • Sorted requirements.
  • Use gevent if possible.

Version 0.6.7 (2015.12.13)

  • If modules in the try...except... block, assume they are optional.

Version 0.6.6 (2015.11.22)

  • Fixed IndexError.

Version 0.6.5 (2015.11.22)

  • Fixed AttributeError.
  • Fixed PEP8 warning.

Version 0.6.4 (2015.11.22)

  • Removed useless code.
  • Cache modules, to avoid duplication of inspection.

Thank @spacewander for the following contributions:

  • Fixed error for Python 2.7.6.
  • Fixed error when using './xxx' as relative path.
  • Support importlib.import_module and __import__.

Version 0.6.3 (2015.11.09)

  • Sort files, make comments more clearer.
  • Fixed grammar, to make the README clearer. Thank @roryokane and @flyingfisch.
  • Make it work with python -m pigar. Thank @lilydjwg.
  • Fixed the pep8 warnings: #15.
  • Make output more clearer: #12.
  • Fixed UnicodeDecodeError for Python 3.

Version 0.6.2 (2015.11.05)

  • If requirements file is overwritten over, show difference between old and new.
  • Adjust the structure of the code.

Version 0.6.1 (2015.11.03)

  • Fixed typo.
  • Follow symlinks.

Version 0.6.0 (2015.10.30)

  • Enhancement: issue #7, show imported module come from which files.
  • Consider package installed via Git.
  • Add command "-i", used to ignore a list of directory.

Version 0.5.5 (2015.10.21)

Version 0.5.2-0.5.4 (2015.10.6)

  • Fixed issue #1.
  • Make version compare more effective.
  • Removed useless code.

Version 0.5.1 (2015.10.01)

  • Available in PyPI(https://pypi-hypernode.com/pypi/pigar).
  • Generate requirements for Python project.
  • Can consider different for different Python versions.
  • Search package names by imported names.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pigar-2.1.1.tar.gz (23.1 MB view details)

Uploaded Source

Built Distribution

pigar-2.1.1-py3-none-any.whl (23.4 MB view details)

Uploaded Python 3

File details

Details for the file pigar-2.1.1.tar.gz.

File metadata

  • Download URL: pigar-2.1.1.tar.gz
  • Upload date:
  • Size: 23.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for pigar-2.1.1.tar.gz
Algorithm Hash digest
SHA256 18dfa0daabbc23e5c14abca8b230c83e6a373ac37fadf2cee26b5a9bc9991fed
MD5 26ead84a451bcea56a60b8dee6b27a35
BLAKE2b-256 fb5c5f7d2b2d95fbb3f3a763ebb73405de096e448aea66ae440308410c6e4e18

See more details on using hashes here.

File details

Details for the file pigar-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: pigar-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for pigar-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1332dc803f6b196ebe25a92a32cb4f2db767d29063e8353bd7162de09b682aba
MD5 bbb03ce799c4a7c6bcab44dd4df14d82
BLAKE2b-256 31ceb41a00f4df5a1fb8b5ba9603f660a350381f754513d3df7493a2282e905a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page