如何检查Django版本


547

我必须为我们的应用程序使用PythonDjango。所以我有两个版本的Python,分别是2.6和2.7。现在,我已经安装了Django。我可以运行示例应用程序以测试Django成功。但是,如何确定Django使用2.6还是2.7版本以及Django使用什么版本的模块?


49
最短的方法-– python3 -m django --version
Aniket Thakur,

8
在我的安装中,无法识别python3。这有效:python -m django --version
Antti A

Answers:


671

Django 1.5支持Python 2.6.5和更高版本。

如果您使用的是Linux,并且要检查使用的Python版本,请从命令行运行python -V

如果要检查Django版本,请打开Python控制台并输入

>>> import django
>>> django.VERSION
(2, 0, 0, 'final', 0)

在检查版本之前,请先进入env,否则没有名为django的模块。
EngineSense

380

基本上与bcoughlan的答案相同,但是在这里,它作为可执行命令:

$ python -c "import django; print(django.get_version())"
2.0

布雷迪·爱默生和bcoughlan的结合: python -c "import django; print(django.VERSION)"回归 (1, 8, 5, 'final', 0)
David Gleba

您应该python -c "import django; print(django.__version__)"改为这样做。它还返回'2.2.4'只是对的调用get_version()),并且是大多数其他库遵循的标准,因为它是在PEP 8中定义的。它的工作原理,因为Django的1.8
鲍里斯

213

如果您已安装该应用程序:

$ django-admin.py version
2.0

截至2018年5月(我再次测试此答案的日期),尽管我已经安装了2.0.1,它仍显示版本为1.11.5。但是>> django.VERSION在python shell中显示了正确的版本
Alex Jolig '18年

1
这对我
有用

1
做得


53
>>> import django
>>> print(django.get_version())
1.6.1

我正在使用IDLE(Python GUI)。


41

如果您有点子,也可以

点冻结
它将显示您的所有组件版本,包括Django。

您可以通过grep传递它,以仅获取Django版本。那是,

josh@villaroyale:~/code/djangosite$ pip freeze | grep Django
Django==1.4.3

36

对于Python

import sys
sys.version

对于Django(如其他人在此处所述):

import django
django.get_version()

仅检查版本的潜在问题是版本会升级,因此代码可能会过时。您要确保'1.7'<'1.7.1'<'1.7.5'<'1.7.10'。普通的字符串比较将在最后一次比较中失败:

>>> '1.7.5' < '1.7.10'
False

解决方案是使用distutils中的StrictVersion

>>> from distutils.version import StrictVersion
>>> StrictVersion('1.7.5') < StrictVersion('1.7.10')
True

2
使用django.VERSION,那已经是元组了呢?我很确定这样做django.VERSION >= (1, 8)总是可以按预期进行。
Flimm

31

正如您所说的,您有两个版本的python,我假设它们位于不同的虚拟环境(例如venv)或conda 环境中

当您安装django时,可能仅在一种环境中。可能有两个不同版本的django,每个版本的python都有一个。

在Unix / Mac终端中,您可以如下检查python版本:

$ python --version

如果您想知道来源:

$ which python

并检查django的版本:

$ python -m django --version

18

有多种获取Django版本的方法。您可以根据需要使用以下给出的任何一种。

注意: 如果您在虚拟环境中工作,请加载python环境


终端命令

  1. python -m django --version
  2. django-admin --version 要么 django-admin.py version
  3. ./manage.py --version 要么 python manage.py --version
  4. pip freeze | grep Django
  5. python -c "import django; print(django.get_version())"
  6. python manage.py runserver --version

Django Shell命令

  1. import django django.get_version() 要么 django.VERSION
  2. from django.utils import version version.get_version() 要么 version.get_complete_version()
  3. import pkg_resources pkg_resources.get_distribution('django').version

(如果您有某种更正或想添加更多相关信息,请随意修改此答案。)


10

要使用Python Shell进行检查,请执行以下操作。

>>>from django import get_version
>>> get_version()

如果您希望在Unix / Linux shell中使用一行来完成此操作,请执行

python -c 'import django; print(django.get_version())'

开发应用程序后,即可使用以下方法直接检查版本。

python manage.py runserver --version

10
django-admin --version
python manage.py --version
pip freeze | grep django

您需要使用python manage.py --versionNote double-
Shawnzam

@Shawnzam是的,当然是一个错字。.非常感谢..Answer编辑
Vishnu Kiran

6

Django将使用PYTHONPATH环境变量指定的Python版本。您可以echo $PYTHONPATH在外壳中使用以确定要使用的版本。

Django使用的模块版本将是PYTHONPATH指定的Python版本下安装的模块版本。



4

您也可以不用Python就可以做到。只需在Django目录中输入以下内容即可:

cat __init__.py | grep VERSION

你会得到类似的东西:

VERSION = (1, 5, 5, 'final', 0)

1
当您不想仅为了获取值而激活虚拟环境时,或者您正在使用诸如AWS Elastic Beanstalk之类的东西而无法激活虚拟环境时,这非常有用。
rjferguson

1
@rjferguson,您无需激活环境即可执行pip freeze/ python -c "import <module>; <module>.VERSION"。您可以简单地引用它:/path/to/env/bin/python -c "<command>"或者,如果您想安装/使用pip,则可以使用:/path/to/env/bin/pip freeze。我一直在使用它,特别是当im以root身份登录并且我的所有应用程序代码都按我的方式运行时www-datasudo su www-data -c "/path/to/env/bin/pip install <module>"甚至不眨眼。(我知道这将近2年了,您现在可能已经知道了-这对于下一个家伙来说更多)
哈维尔·巴齐

>不使用Python >> python -c
Alex Babak


4

Django版本或任何其他软件包版本

打开终端或命令提示符

类型

pip show django

要么

pip3 show django

您可以找到任何软件包版本...
示例

pip show tensorflow

pip show numpy 

等等....


我最喜欢这个答案的简单性。pip freeze如果您打包了一堆,就会显示大量的废话。
DukeSilver


3

我认为最Python化的方式是:

>>> import pkg_resources; 
>>> pkg_resources.get_distribution('django').version
'1.8.4'

这直接与setup.py相关联: https //github.com/django/django/blob/master/setup.py#L37

这绝对是获得ANY软件包版本号的最佳方法!

也有 distutils

>>> from distutils.version import LooseVersion, StrictVersion
>>> LooseVersion("2.3.1") < LooseVersion("10.1.2")
True
>>> StrictVersion("2.3.1") < StrictVersion("10.1.2")
True
>>> StrictVersion("2.3.1") > StrictVersion("10.1.2")
False

至于python版本,我同意@jamesdradbury

>>> import sys
>>> sys.version
'3.4.3 (default, Jul 13 2015, 12:18:23) \n[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]'

捆绑在一起:

>>> StrictVersion((sys.version.split(' ')[0])) > StrictVersion('2.6')
True

2

如果要进行Django版本比较,可以使用django-nine(pip install django-nine)。例如,如果您的环境中安装的Django版本是1.7.4,则以下内容将适用。

from nine import versions

versions.DJANGO_1_7 # True
versions.DJANGO_LTE_1_7 # True
versions.DJANGO_GTE_1_7 # True
versions.DJANGO_GTE_1_8 # False
versions.DJANGO_GTE_1_4 # True
versions.DJANGO_LTE_1_6 # False



1

您可以通过在shell提示符中运行以下命令来获取Django版本

python -m django --version

如果安装了Django,则应该看到该版本,否则将收到错误消息,提示“没有名为django的模块”。


1

您可以导入django,然后按如下所示键入print语句,以了解django的版本,即安装在系统上的版本:

>>> import django
>>> print(django.get_version())
2.1

1

Django版本支持的Python版本

Django version     Python versions
1.0                2.3, 2.4, 2.5, 2.6
1.1                2.3, 2.4, 2.5, 2.6
1.2                2.4, 2.5, 2.6, 2.7
1.3                2.4, 2.5, 2.6, 2.7
1.4                2.5, 2.6, 2.7
1.5                2.6.5, 2.7 and 3.2.3, 3.3 (experimental)
1.6                2.6.5, 2.7 and 3.2.3, 3.3
1.11               2.7, 3.4, 3.5, 3.6, 3.7 (added in 1.11.17)
2.0                3.4, 3.5, 3.6, 3.7
2.1, 2.2           3.5, 3.6, 3.7

要验证Python是否可以看到Django,请在您的shell中键入python。然后在Python提示符下,尝试导入Django:

>>> import django
>>> print(django.get_version())
2.1
>>> django.VERSION
(2, 1, 4, 'final', 0)

0

只需键入python -m django --version 或键入pip freeze即可查看已安装模块的所有版本,包括Django。


完全没有理由对此予以否决,这是最简洁的答案之一。
tfantina

为什么这不满意?
Azima
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.