Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to list dependencies for a python library without installing? [duplicate]

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.

like image 379
Brendan Abel Avatar asked Jan 23 '17 22:01

Brendan Abel


People also ask

How do I see library dependencies in Python?

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.

How do I download a Python package without installing it?

You can use pip , with the --download option, which will download the main package and its dependancies, without installing them.

How can I tell what dependencies are installed?

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.


2 Answers

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 
like image 118
oabv Avatar answered Sep 23 '22 13:09

oabv


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)

like image 31
ShpielMeister Avatar answered Sep 21 '22 13:09

ShpielMeister