So I am creating a brand new Flask app from scratch. As all good developers do, my first step was to create a virtual environment.
The first thing I install in the virtual environment is Flask==0.11.1
. Flask installs its following dependencies:
- click==6.6
- itsdangerous==0.24
- Jinja2==2.8
- MarkupSafe==0.23
- Werkzeug==0.11.11
- wheel==0.24.0
Now, I create a requirements.txt to ensure everyone cloning the repository has the same version of the libraries. However, my dilemma is this:
One good thing here is you are using virtualenv, which will make your task very easy.
Activate virtualenv ($source path_to_virtualenv/bin/activate
)
Go to your project root directory
Get all the packages along with dependencies in requirements.txt
pip freeze > requirements.txt
You don't have to worry about anything else apart from making sure next person installs the requirements recursively by following command
pip install -r requirements.txt
Both approaches are valid and work. But there is a little difference. When you enter all the dependencies in the requirements.txt
you will be able to pin the versions of them. If you leave them out, there might be a later update and if Flask has something like Werkzeug>=0.11
in its dependencies, you will get a newer version of Werkzeug installed.
So it comes down to updates vs. defined environment. Whatever suits you better.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With