Is there a way to get a list of dependencies for a given python package without installing it first?
I can currently get a list of requirements, but it requires installing the packages. For example, I can use pip to show basic requirements info, but it doesn't include version information:
$ pip show pytest Name: pytest Version: 3.0.6 ... Requires: colorama, setuptools, py
I've tried a library called pipdeptree
that includes much better output on requirements, but it also requires installation of the packages
$ pipdeptree -p pytest pytest==3.0.6 - colorama [required: Any, installed: 0.3.7] - py [required: >=1.4.29, installed: 1.4.32] - setuptools [required: Any, installed: 34.0.0] - appdirs [required: >=1.4.0, installed: 1.4.0] ...
Ideally, I would get the level of detail that pipdeptree
provides. Also, being able to produce a requirements.txt
file from a python wheel
or from pypi with pip
would suffice as well.
I'm interested in the dependency constraints for a given package, not the final downloaded packages after resolving the dependency requirements. For example, I don't really care that pip downloaded package-2.3.4
, I would rather know that package>=2.1
was a requirement.
Pip Check Command – Check Python Dependencies After Installation. Because pip doesn't currently address dependency issues on installation, the pip check command option can be used to verify that dependencies have been installed properly in your project. For example: $ pip check No broken requirements found.
You can use pip , with the --download option, which will download the main package and its dependancies, without installing them.
Usage in npm scripts You can use check-installed-dependencies inside npm scripts. Then in either prepublish or another npm script you can use check-installed-dependencies . Note: Using check-installed-dependencies in prepublish will stop the package from being published.
PyPi provides a JSON endpoint with package metadata:
>>> import requests >>> url = 'https://pypi.org/pypi/{}/json' >>> json = requests.get(url.format('pandas')).json() >>> json['info']['requires_dist'] ['numpy (>=1.9.0)', 'pytz (>=2011k)', 'python-dateutil (>=2.5.0)'] >>> json['info']['requires_python'] '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'
For a specific package version, add an additional version segment to the URL:
https://pypi.org/pypi/pandas/0.22.0/json
If you don't mind installing conda, this might do the trick for you:
$ conda info numpy=1.11.1 python=3.6.3
The version numbers of the package or of python are optional (all versions will then be described)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With