Skip to content

Instantly share code, notes, and snippets.

@Jc2k
Created May 21, 2014 16:09
Show Gist options
  • Save Jc2k/e49ea59035979ecaffe5 to your computer and use it in GitHub Desktop.
Save Jc2k/e49ea59035979ecaffe5 to your computer and use it in GitHub Desktop.
Quick and dirty script to list unpinned dependencies in a requirements.txt
from pip.req import InstallRequirement, RequirementSet, parse_requirements
from pip.index import PackageFinder
import tempfile
import shutil
build_dir = tempfile.mkdtemp()
src_dir = tempfile.mkdtemp()
download_dir = tempfile.mkdtemp()
try:
finder = PackageFinder([], ['https://pypi.python.org/simple'])
rset = RequirementSet(
build_dir = build_dir,
src_dir = src_dir,
download_dir = download_dir,
)
#rset.add_requirement(InstallRequirement.from_line("celery==3.1.5"))
#rset.add_requirement(InstallRequirement.from_line("amqp==1.3.3"))
for req in parse_requirements("requirements.txt", finder):
rset.add_requirement(req)
rset.prepare_files(finder)
print "Please add the following pins:"
for key in sorted(rset.requirements.keys()):
r = rset.requirements[key]
for test, ver in r.req.specs:
if test == '==':
break
else:
print "%s==%s" % (r.req.project_name, r.installed_version)
finally:
for d in [build_dir, src_dir, download_dir]:
shutil.rmtree(d)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment