Requirements.txt greater than equal to and then less than?

Chris picture Chris · Jun 13, 2018 · Viewed 13.9k times · Source

I have this line in my requirements file

django>=1.10,<1.11

Does that mean I need to have Django version >= 1.10 and then less than 1.11?

Answer

Willem Van Onsem picture Willem Van Onsem · Jun 13, 2018

Yes. The pip manual [doc] has a section on the format of "requirement specifiers". These are documented in PEP-508 [pep] and PEP-440 [pep]:

The comparison operator determines the kind of version clause:

  1. ~=: Compatible release clause
  2. ==: Version matching clause
  3. !=: Version exclusion clause
  4. <=, >=: Inclusive ordered comparison clause
  5. <, >: Exclusive ordered comparison clause
  6. ===: Arbitrary equality clause.

The comma (",") is equivalent to a logical and operator: a candidate version must match all given version clauses in order to match the specifier as a whole.

So in your case it means that the Django version is 1.10 or higher and not 1.11 or higher (so 1.10 is fine, 1.10.1, as well, but not 1.11, 1.11.1, or 2.0.1).