Does Python requirements file have to specify version?

Intrastellar Explorer picture Intrastellar Explorer · Mar 7, 2019 · Viewed 29.2k times · Source

I have a requirements.txt file for a Python code base. The file has everything specified:

pytz==2017.2
requests==2.18.4
six==1.11.0

I am adding a new package. Should I list its version? If yes, how do I pick a version to specify?

Answer

Engineero picture Engineero · Mar 7, 2019

Check out the pip docs for more info, but basically you do not need to specify a version. Doing so can avoid headaches though, as specifying a version allows you to guarantee you do not end up in dependency hell.

Note that if you are creating a package to be deployed and pip-installed, you should use the install-requires metadata instead of relying on requirements.txt.

Also, it's a good idea to get into the habit of using virtual environments to avoid dependency issues, especially when developing your own stuff. Anaconda offers a simple solution with the conda create command, and virtualenv works great with virtualenvwrapper for a lighter-weight solution. Another solution, pipenv, is quite popular.