Skip to content

Instantly share code, notes, and snippets.

@adriancaruana
Created November 29, 2022 00:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adriancaruana/f7af30a4b43f4dc37112035621d4702f to your computer and use it in GitHub Desktop.
Save adriancaruana/f7af30a4b43f4dc37112035621d4702f to your computer and use it in GitHub Desktop.
This gist can be used to get the major and minor versions of pip-installed packages in your environment.
#!/usr/bin/python3
# Generate requirements.txt automatically from live environment
# Run like this: ./get_package_versions.py >> requirements.txt
# Requires pip>=22.* (if fails, try: python3 -m pip install --upgrade pip)
from pip._internal.metadata import get_default_environment
wildcard_bugfix = lambda ver: ".".join(ver.split(".")[:2]) + ".*"
reqs = "\n".join(
f"{package.metadata_dict['name']}=={wildcard_bugfix(package.metadata_dict['version'])}"
for package in sorted(list(get_default_environment().iter_installed_distributions()), key=lambda x: str(x).lower())
)
print(reqs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment