Skip to content

Instantly share code, notes, and snippets.

@eugen-hoppe
Created August 28, 2024 12:18
Show Gist options
  • Select an option

  • Save eugen-hoppe/7a0dbb6857904a992a604e6d23752b5d to your computer and use it in GitHub Desktop.

Select an option

Save eugen-hoppe/7a0dbb6857904a992a604e6d23752b5d to your computer and use it in GitHub Desktop.
Create for each record in requirements.txt a record with a version depending on environment.
import pkg_resources
import os
INPUT_FILE = "requirements.txt"
OUTPUT_FILE = "requirements_.txt"
# OUTPUT_FILE = "requirements.txt"
def get_installed_version(package_name):
try:
return pkg_resources.get_distribution(package_name).version
except pkg_resources.DistributionNotFound:
return None
def process_requirements(input_file=INPUT_FILE, output_file=OUTPUT_FILE):
if not os.path.exists(input_file):
print(f"Die Datei {input_file} existiert nicht.")
return
with open(input_file, 'r') as f:
requirements = f.readlines()
with open(output_file, 'w') as f:
for requirement in requirements:
requirement = requirement.strip()
if '[' in requirement:
package_name, extras = requirement.split('[')
extras = '[' + extras
else:
package_name = requirement
extras = ''
version = get_installed_version(package_name)
if version:
f.write(f"{package_name}{extras}=={version}\n")
else:
f.write(f"{requirement}\n")
if __name__ == "__main__":
process_requirements()
@eugen-hoppe

eugen-hoppe commented Aug 28, 2024

Copy link
Copy Markdown
Author
curl https://gist.githubusercontent.com/eugen-hoppe/7a0dbb6857904a992a604e6d23752b5d/raw/809be558eb4aebc481b19b5d0ea2785fc098e39e/version_of_each_requirement.py -o version_of_each_requirement.py && python version_of_each_requirement.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment