Error using pip with requirements.txt

I have never used requirements.txt before, and just came across it following a tutorial. My file looks like this:

pip install kivy
pip install kivy-deps.angle
pip install kivy-deps.glew
pip install kivy-deps.gstreamer
pip install kivy-deps.sdl2

Yet when I run pip install-r requirements.txt, I get the error:

ERROR: Invalid requirement: 'pip install kivy' (from line 1 of requirements.txt)

Kivy installs fine if I do a plain pip install kivy. What is wrong with this scenario?


Solution 1:

That's not a valid requirements.txt file, it's a list of shell commands. You could run it with a shell:

bash requirements.txt

Renaming it would be a good idea to avoid confusion.

A valid requirements.txt file is usually produced by running pip freeze in an environment with dependencies already installed and redirecting its output to a file:

pip freeze > requirements.txt

It can also be crafted manually. It would look somewhat like this:

kivy==1.11.1
kivy-deps.angle==0.2.0
kivy-deps.glew==0.2.0
kivy-deps.gstreamer==0.2.0
kivy-deps.sdl2==0.2.0

As you can see, it doesn't specify just package names, but also their versions. This way you're always installing known good versions of dependencies.