/pip-package-list

Parse & recurse requirements.txt and setup.py files to form a flat list of dependencies.

Primary LanguagePythonMIT LicenseMIT

pip-package-list

License PyPi test

A small and definitely faulty tool that tries to form a list of packages that you depend on. This is useful in mono-repo's where all dependencies are split into dozens of requirements.txt and setup.py files.

One particular use-case that fueled the development of this tool was to create a flat list of dependencies to pre-install in a Docker base image.

Although there is a number of tools that parse and resolve requirement files, I did not find any that parse setup.py files and extract install_requires.

Usage

usage: pip-package-list [-h] [--recurse-recursive] [--recurse-editable] [--recurse-path]
                        [--inline-constraints] [--dedupe] [--remove-editable] [--remove-path]
                        [--remove-recursive] [--remove-constraints] [--remove-vcs] [--remove-wheel]
                        [--remove-unversioned] [--remove-index-urls]
                        file_paths [file_paths ...]

positional arguments:
  file_paths            list of requirements.txt or setup.py files

optional arguments:
  -h, --help            show this help message and exit
  --recurse-recursive   recurse into -r entries
  --recurse-editable    recurse into -e entries
  --recurse-path        recurse into local path entries
  --inline-constraints  recurse into -c entries and inline them
  --dedupe              de-duplicate the resulting list
  --remove-editable     remove editable requirements from the final list
  --remove-path         remove path requirements from the final list
  --remove-recursive    remove recursive requirements (-r) from the final list
  --remove-constraints  remove constaints (-c) from the final list
  --remove-vcs          remove vcs requirements from the final list
  --remove-wheel        remove wheel requirements from the final list
  --remove-unversioned  remove requirements without a version number from the final list
  --remove-index-urls   remove -i entries (index urls) from the final list