Как проверить версию Django


547

Я должен использовать Python и Django для нашего приложения. Итак, у меня есть две версии Python, 2.6 и 2.7. Теперь я установил Django. Я мог бы успешно запустить пример приложения для тестирования Django. Но как мне убедиться, что Django использует версию 2.6 или 2.7 и какую версию модулей использует Django?


50
Кратчайший путь -python3 -m django --version
Aniket Тхакур

8
В моей установке python3 не распознается. Это работает: python -m django --version
Antti A

Ответы:


673

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)
Дэвид Глеба

Вы должны сделать 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 года (дата, когда я снова проверил этот ответ), он показывает версию как 1.11.5, несмотря на то, что я установил 2.0.1. Но >> django.VERSIONв оболочке python отображается правильная версия
Alex Jolig

1
это сработало для меня: Ubuntu 18.04, virtualenv с P 3.6 и Django 2.2
Carmine Tambascia

1
Отличная работа
Phok Chanrithisak

97

Перейдите в домашний каталог вашего проекта Django и выполните:

./manage.py --version


41

Если у вас есть пип , вы можете также сделать

заморозка
и он покажет всю версию вашего компонента, включая Django.

Вы можете передать его через grep, чтобы получить только версию Django. Это,

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

36

Для Python :

import sys
sys.version

Для Джанго (как уже упоминалось здесь):

import django
django.get_version()

Потенциальная проблема простой проверки версии заключается в том, что версии обновляются, и поэтому код может устареть. Вы хотите убедиться, что «1.7» <«1.7.1» <«1.7.5» <«1.7.10». Нормальное сравнение строк завершится неудачно в последнем сравнении:

>>> '1.7.5' < '1.7.10'
False

Решением является использование StrictVersion от distutils .

>>> 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

  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 сделайте следующее.

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

Если вы хотите сделать это в оболочке Unix / Linux одной строкой, то выполните

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 the double-
Shawnzam

@Shawnzam да, конечно, опечатка .. Большое спасибо .. Отредактированный ответ
Вишну Киран

6

Django будет использовать версию Python, указанную в переменной окружения PYTHONPATH. Вы можете использовать echo $PYTHONPATHв оболочке, чтобы определить, какая версия будет использоваться.

Версии модуля, используемые Django, будут версиями модуля, установленными в версии Python, указанной в PYTHONPATH.


5

запустить pip listна LINUX TERMINAL и найти Django и его версию в списке

запустить pip freezeна cmd на Windows


5

Версия Django или любая другая версия пакета

откройте терминал или командную строку

тип

pip show django

или

pip3 show django

Вы можете найти любую версию пакета ...
пример

pip show tensorflow

pip show numpy 

так далее....


Мне больше нравится простота этого ответа. pip freezeпоказывает кучу лишней хрени, если вы собрали несколько пакетов.
DukeSilver

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>"или если вы хотите установить / использовать пип, то же самое: /path/to/env/bin/pip freeze. Я использую это все время, особенно когда я вошел в систему как root, и весь мой код приложения работает как www-dataя: sudo su www-data -c "/path/to/env/bin/pip install <module>"и даже не мигает. (я знаю, что это почти 2 года спустя, и вы, вероятно, знаете об этом сейчас - это больше для следующего парня)
Хавьер Буззи

> без Python >> python -c
Алекс Бабак

4

В django есть недокументированный модуль версий утилит

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

При этом вы можете получить обычную версию в виде строки или подробный кортеж версии:

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


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

Это определенно лучший способ получить номер версии ЛЮБОГО пакета!

Также есть 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

Вы можете получить версию django, выполнив следующую команду в командной строке

python -m django - версия

Если Django установлен, вы должны увидеть версию, в противном случае вы получите сообщение об ошибке «Нет модуля с именем django».


1

Вы можете импортировать django, а затем ввести команду print, как указано ниже, чтобы узнать версию django, т.е. установленную в вашей системе:

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

1

Версия Python поддерживается версией Django

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

Чтобы убедиться, что Django может видеть Python, введите 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

почему это понижено ??
Азима
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.