How to extract dependencies from a PyPi package without downloading it?
package-management, pip, pypi, python
Solution
I've just needed to find a way to do this and this is what I came up with (stolen from pip).
def dist_metadata(setup_py):
'''Get the dist object for setup.py file'''
with open(setup_py) as f:
d = f.read()
try:
# we have to do this with current globals else
# imports will fail. secure? not really. A
# problem? not really if your setup.py sources are
# trusted
exec d in globals(), globals()
except SystemExit:
pass
return distutils.core._setup_distribution
https://stackoverflow.com/a/12505166/3332282 answers why the exec incantation is subtle and hard to get right.
Problem
I want to get the dependency of a PyPi package remotely without needing to download it completely. I seem to understand (reading the pip code) that pip when resolving dependencies seems to read the egg once the package has been downloaded. Is there any other way?