Get Python Requirements Package Hashes
Python's (pip's) requirements.txt file is the equivalent to package.json in the JavaScript / Node.js world. This requirements.txt file isn't as pretty as package.json but it not only defines a version but goes a step further, providing a sha hash to compare against to ensure package integrity:
Flask==0.12.1 \
--hash=sha256:6c3130c8927109a08225993e4e503de4ac4f2678678ae211b33b519c622a7242
Jinja2==2.9.6 \
--hash=sha256:2231bace0dfd8d2bf1e5d7e41239c06c9e0ded46e70cc1094a0aa64b0afeb054
MarkupSafe==1.0 \
--hash=sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665
....
Coming from the JavaScript / package.json world, you only need to provide the package name and version. To get the hash of a python package, you can use hashin. The first step is installing hashin:
pip install hashin
Once hashin is installed, you can get the package hash easily:
hashin Flask==0.12.1
The code above adds the package name, version, and available hashes to your requirements.txt file automatically. Unfortunately I'm not aware of a method for recursive hashin checks, so if a package dependency doesn't use hashes, you'll need to run hashin for each of those packages manually.




I think in your second snippet you mean
hashin Flask==0.12.1.Also, hashin works by just specifying the package name. It’ll then install the latest version. E.g.
hashin Flask.Yep, my bad! Updated!
Check out for getting both recursive checks and hashes.
pip-compile(frompip-tools) can generate hashes in a requirements file, using the option--generate-hashes.