39

In my requirements.txt file I want to specify that my app needs Django version 1.3.x. That is, either 1.3.0, or 1.3.1, or 1.3.2, etc. (When these come out.) But not 1.4, when it comes out.

What's the syntax for this?

Ram Rachum
  • 84,019
  • 84
  • 236
  • 374

2 Answers2

53

According to Ian Bicking:

Django>=1.3,<1.4

However, it's apparently safer to do:

Django>=1.3,<1.3.99
quasistoic
  • 4,657
  • 1
  • 17
  • 10
  • 6
    Maybe it's obvious, but beware that if you want to automatically upgrade Django when a new version comes out on PyPI, you should call pip with the --upgrade flag, like this: `pip install --upgrade -r requirements.txt` – Augusto Destrero Oct 07 '15 at 10:16
  • 1
    What happens if you (hypothetically) had Django `v1.3.100` or later? – Tim Feb 14 '20 at 17:17
  • You can use `~=1.3.0` to get the latest patch version, see https://nok.github.io/pipdev?spec=~=1.3.0&vers=1.3.9999 . – Darius Jun 14 '22 at 22:32
1

my app needs Django version 1.3.x

In your case, use one of:


Compatible release

Django~=1.3.0

Ref: PEP 440 Compatible release


Version matching

Django==1.3.*

Ref: PEP 440 Version matching


Ordered comparison

Django>=1.3,<1.4

Note: ordered operators work for your case after the change introduced in this commit in 2015

Ref: PEP 440 Inclusive ordered comparison

Ref: PEP 440 Exclusive ordered comparison


catwith
  • 875
  • 10
  • 13