/
extractdatapip.py
43 lines (33 loc) · 1.21 KB
/
extractdatapip.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import pkg_resources
import sys
import fileinfo
DATA_DIR = 'data/'
def search_packages_info(query):
"""
Gather details from installed distributions. Print distribution name,
version, location, and installed files. Installed files requires a
pip generated 'installed-files.txt' in the distributions '.egg-info'
directory.
"""
installed_packages = dict(
[(p.project_name.lower(), p) for p in pkg_resources.working_set])
for name in query:
normalized_name = name.lower()
if normalized_name in installed_packages:
dist = installed_packages[normalized_name]
try:
metadata = dist.get_metadata('METADATA')
except:
try:
metadata = list(dist._get_metadata('PKG-INFO'))
except:
metadata = None
package = {
'name': dist.project_name,
'version': dist.version,
'requires': [(dep.project_name, dep.specs) for dep in dist.requires()],
'metadata' : metadata,
}
fileinfo.save_data(name, package)
if __name__ == '__main__':
data = search_packages_info(sys.argv[1:])