def parse_requirement_file(req_file, constraint=False):
"""Returns dependencies parsed from a requirement file
:param req_file: file to parse
:param constraint: if file a constraints file
:return: dictionary of dependencies
"""
if not os.path.exists(req_file):
printer.warning('Requirement file "{}" not found'.format(req_file))
sys.exit()
with open(req_file, 'r') as requirements_file:
with tempfile.NamedTemporaryFile('r+', delete=False) as temp_file:
requirements_lines = requirements_file.readlines()
# Ignore links
data = [
line for line in requirements_lines
if not line.startswith('-r') and not line.startswith('-c')
]
data = "".join(data)
temp_file.write(data)
processed_file_path = temp_file.name
requirements = {
item.name: item.req.specifier or None
for item in pip.req.parse_requirements(
filename=processed_file_path,
session='session',
constraint=constraint
)
if isinstance(item, pip.req.InstallRequirement)
}
# Delete temporary file
with contextlib.suppress(FileNotFoundError):
os.remove(processed_file_path)
return requirements
评论列表
文章目录