Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Split requirements files in pip

To create Python virtual environments I use virtualenv and pip. The workflow is very simple:

$ virtualenv project $ cd project $ . bin/activate $ pip install -r /path/to/requirements/req1.txt $ pip install -r /path/to/requirements/req2.txt 

The number of different requirement files can grow enough to make handy to have a way to include them at once, so I'd rather prefer to say:

$ pip install -r /path/to/requirements/req1_req2.txt 

with req1_req2.txt containing something like:

include /path/to/requirements/req1.txt include /path/to/requirements/req2.txt 

or otherwise:

$ pip install -r /path/to/requirements/*.txt 

None of that works and however much simple it could be, I can't figure out how to do what I want.

Any suggestion?

like image 750
Paolo Avatar asked Jul 28 '12 20:07

Paolo


People also ask

How do you use a requirements TXT file with pip?

The most common command is pip freeze > requirements. txt , which records an environment's current package list into requirements. txt. If you want to install the dependencies in a virtual environment, create and activate that environment first, then use the Install from requirements.

What is requirements Dev txt?

txt. This is a safeguard against typos when running pip install -r requirements-dev. txt. If you leave out the -r by accident, this package will cause your installation to abort.


2 Answers

The -r flag isn't restricted to command-line use only, it can also be used inside requirements files. So running pip install -r req-1-and-2.txt when req-1-and-2.txt contains this:

-r req-1.txt -r req-2.txt 

will install everything specified in req-1.txt and req-2.txt.

like image 125
Felix Loether Avatar answered Oct 13 '22 21:10

Felix Loether


Just on a note, you can also split the requirements based on your groupings and embed them in a single file ( or again can prepare multiple requirements file based on your environment), that you can execute.

For example, the test requirements here:

requirements-test.txt

pylint==2.4.4 pytest==5.3.2 

The dev requirements here:

requirements-dev.txt

boto3>=1.12.11 

Master requirements file containing your other requirements:

requirements.txt

-r requirements-dev.txt -r requirements-test.txt 

Now, you can just install the requirements file embedding your other requirements

pip3 install -r requirements.txt 
like image 45
TechFree Avatar answered Oct 13 '22 21:10

TechFree