Managing contents of requirements.txt for a Python virtual environment
Solution 1
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.
Solution 2
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
Solution 3
You can (from your active virtual environment) do the following
pip freeze > requirements.txt
which'll automatically take care of all libraries/modules available in your project.
The next developer would only have to issue:
pip install -r requirements.txt
Amistad
Updated on October 31, 2020Comments
-
Amistad over 3 years
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:
- Do I mention each of the Flask dependencies in the requirements.txt along with the version numbers OR
- Do I just mention the exact Flask version number in the requirements.txt and hope that when they do a pip install requirements.txt, Flask will take care of the dependency management and they will download the right versions of the dependent libraries