def _compile_requirements(self):
packages = set()
for requirement in self.distribution.install_requires:
requirement = Requirement.parse(requirement)
packages.add(requirement.key)
# Create the dependency map
entries = json.loads(
decode(subprocess.check_output(['pipdeptree', '--json'])))
entry_map = { entry['package']['key'] :
set([ dependency['key'] for dependency in entry['dependencies'] ]) for entry in entries }
while True:
for package in packages:
if package in entry_map and not entry_map[package] < packages:
packages.update(entry_map[package])
break
else:
break
module_files = set()
binary_files = set()
for package in packages:
in_header = True
root = None
for info in search_packages_info(package):
files = info['files']
root = info['location']
for file in files:
full_path = os.path.abspath(
os.path.join(root, file))
if full_path.endswith('.py') or full_path.endswith('.pyc'):
module_files.add(full_path)
if is_binary(full_path):
binary_files.add(full_path)
return module_files, binary_files
评论列表
文章目录