main
py 38 lines 1.22 KB
Raw
1 import pkg_resources
2 import re
3
4 def get_installed_version(package_name):
5 try:
6 return pkg_resources.get_distribution(package_name).version
7 except pkg_resources.DistributionNotFound:
8 return None
9
10 def update_requirements():
11 with open('requirements.txt', 'r') as f:
12 requirements = f.readlines()
13
14 updated_requirements = []
15 for req in requirements:
16 req = req.strip()
17 if not req or req.startswith('#'):
18 updated_requirements.append(req)
19 continue
20
21 # Extract package name
22 match = re.match(r'^([^=<>]+)==', req)
23 if match:
24 package_name = match.group(1)
25 current_version = get_installed_version(package_name)
26 if current_version:
27 updated_requirements.append(f'{package_name}=={current_version}')
28 else:
29 updated_requirements.append(req) # Keep original if package not found
30 else:
31 updated_requirements.append(req) # Keep original if pattern doesn't match
32
33 # Write updated requirements
34 with open('requirements.txt', 'w') as f:
35 f.write('\n'.join(updated_requirements) + '\n')
36
37 if __name__ == '__main__':
38 update_requirements()