关于python:如何检查Django版本

How to check Django version

我必须在我们的应用程序中使用python和django。所以我有两个版本的python,2.6和2.7。现在我已经安装了django。我可以运行示例应用程序来成功测试django。但是,如何确保django使用的是2.6或2.7版本,以及django使用的是什么版本的模块?


Django1.5支持python2.6.5及更高版本。

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

如果要检查django版本,请打开一个python控制台并键入

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


基本上与bcoughlan的答案相同,但这里是一个可执行命令:

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


如果已安装应用程序:

1
2
$ django-admin.py version
2.0


转到Django项目主目录并执行以下操作:

1
./manage.py --version


1
2
3
>>> import django
>>> print(django.get_version())
1.6.1

我正在使用空闲(python-gui)。


如果你有PIP,你也可以做

1
pip freeze

它会显示你的django版本。

你可以通过管道通过grep来获得django版本。也就是说,

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


Python:

1
2
import sys
sys.version

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

1
2
import django
django.get_version()

简单检查版本的潜在问题是版本得到升级,因此代码可能过时。要确保"1.7"<"1.7.1"<"1.7.5"<"1.7.10"。正常字符串比较在上次比较中失败:

1
2
>>> '1.7.5' < '1.7.10'
False

解决方案是使用distutils中的strictversion。

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


在命令提示下键入以下内容:

1
django-admin.py version

如果安装了django,它将打印当前版本(如1.6.5)。否则,shell将打印一条错误消息。


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

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

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

1
$ python --version

如果你想知道来源:

1
$ which python

要检查Django的版本:

1
$ python -m django --version


有多种方法可以获得django版本。根据您的要求,您可以使用下面给出的任何一个。

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

终端命令

  • python -m django --version
  • django-admin --versiondjango-admin.py version
  • ./manage.py --versionpython manage.py --version
  • pip freeze | grep Django
  • python -c"import django; print(django.get_version())"
  • python manage.py runserver --version
  • django shell命令

  • import django
    django.get_version()
    django.VERSION
  • from django.utils import version
    version.get_version()
    version.get_complete_version()
  • import pkg_resources
    pkg_resources.get_distribution('django').version
  • (如果您有某种更正或希望添加更多相关信息,请随意修改此答案。)


    1
    2
    3
    django-admin --version
    python manage.py --version
    pip freeze | grep django


    转到控制台并键入:

    1
    django-admin --version

    更新

    最近我注意到,正确的方法是转到python shell并检查那里的版本:

    1
    2
    3
    $ python
    >> import django
    >> django.VERSION


    要使用python shell进行检查,请执行以下操作。

    1
    2
    >>>from django import get_version
    >>> get_version()

    如果您希望在UNIX/Linux shell中用一行代码来完成此操作,请执行以下操作:

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

    一旦开发了一个应用程序,就可以使用下面的代码直接检查版本。

    1
    python manage.py runserver --version

    Django将使用pythonpath环境变量指定的python版本。您可以在shell中使用echo $PYTHONPATH来确定将使用哪个版本。

    Django使用的模块版本将是在pythonpath指定的python版本下安装的模块版本。


    在Linux终端上运行pip list,在列表中找到django及其版本

    在Windows上的命令上运行pip freeze


    Django中有一个未记录的utils版本模块

    https://github.com/django/django/blob/master/django/utils/version.py

    通过它,您可以得到字符串形式的普通版本或详细的版本元组:

    1
    2
    3
    4
    5
    >>> from django.utils import version
    >>> version.get_version()
    ... 1.9
    >>> version.get_complete_version()
    ... (1, 9, 0, 'final', 0)

    你也可以不用Python来做。只需在django目录中键入:

    1
    cat __init__.py | grep VERSION

    你会得到如下信息:

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


    我觉得最刺激的方式是:

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

    这直接与setup.py联系在一起:https://github.com/django/django/blob/master/setup.py_l37

    这绝对是获取任何软件包版本号的最佳方法!

    还有EDOCX1[4]

    1
    2
    3
    4
    5
    6
    7
    >>> 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

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

    把它们绑在一起:

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

    在python shell中键入以下命令

    1
    2
    import django
    django.get_version()


    在django 1.0之后,你就可以这样做了。

    1
    2
    $ django-admin --version
    1.11.10

    如果要对django版本进行比较,可以使用django-nine(pip安装django nine)。例如,如果环境中安装的Django版本是1.7.4,那么下面的内容是正确的。

    1
    2
    3
    4
    5
    6
    7
    8
    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

    如果您在虚拟环境中工作,pip freeze会告诉您是否可以使用它。

    1
    django-admin --version


    通过在shell提示下运行以下命令,可以获得django版本

    python-m django——版本

    如果安装了django,您应该看到该版本,否则会得到一个错误消息"没有名为django的模块"。


    只需在命令提示下运行

    django-admin.py version


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

    1
    2
    3
    >>> import django
    >>> print(django.get_version())
    2.1

    Django版本支持的python版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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:

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