วิธีตรวจสอบเวอร์ชั่น Django


547

ฉันต้องใช้PythonและDjangoสำหรับแอปพลิเคชันของเรา ดังนั้นฉันมี 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

คำตอบ:


672

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
Boris

213

หากคุณติดตั้งแอปพลิเคชัน:

$ django-admin.py version
2.0

ในเดือนพฤษภาคม 2018 (วันที่ฉันทดสอบคำตอบนี้อีกครั้ง) จะแสดงเวอร์ชันเป็น 1.11.5 แม้ว่าฉันจะติดตั้ง 2.0.1 แล้วก็ตาม แต่>> django.VERSIONในไพ ธ อนเชลล์แสดงเวอร์ชั่นที่ถูกต้อง
Alex Jolig

1
สิ่งนี้ใช้ได้กับฉัน: Ubuntu 18.04, virtualenv พร้อม P 3.6 และ Django 2.2
Carmine Tambascia

1
เยี่ยมมาก ๆ
Phok Chanrithisak



41

หากคุณมีpipคุณสามารถทำได้

แช่แข็ง pip
และจะแสดงเวอร์ชั่นคอมโพเนนต์ทั้งหมดของคุณรวมถึง 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

การแก้ปัญหาคือการใช้StrictVersion จาก distutils

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

2
สิ่งที่เกี่ยวกับการใช้django.VERSIONซึ่งมาเป็น tuple แล้ว? ฉันค่อนข้างมั่นใจว่าการทำงานdjango.VERSION >= (1, 8)จะทำงานได้ตามปกติ
Flimm

31

ในขณะที่คุณบอกว่าคุณมีสองรุ่นหลามผมถือว่าพวกเขาอยู่ในที่แตกต่างกันสภาพแวดล้อมเสมือน (เช่น venv) หรือบางทีอาจจะสภาพแวดล้อม CONDA

เมื่อคุณติดตั้ง django อาจเป็นไปได้ในสภาพแวดล้อมเดียว เป็นไปได้ว่าคุณมี django สองเวอร์ชันที่แตกต่างกันหนึ่งรุ่นสำหรับหลามแต่ละเวอร์ชั่น

จากเทอร์มินัล Unix / Mac คุณสามารถตรวจสอบเวอร์ชั่นของไพ ธ อนได้ดังนี้:

$ python --version

หากคุณต้องการทราบแหล่งที่มา:

$ which python

และเพื่อตรวจสอบเวอร์ชั่นของ django:

$ python -m django --version

18

มีหลายวิธีในการรับรุ่น Django คุณสามารถใช้ข้อใดข้อหนึ่งต่อไปนี้ตามด้านล่างตามความต้องการของคุณ

หมายเหตุ: หากคุณกำลังทำงานในสภาพแวดล้อมเสมือนจริงกรุณาโหลดสภาพแวดล้อมของหลาม


คำสั่งเทอร์มินัล

  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 ด้วยบรรทัดเดียวให้ทำ

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

เมื่อคุณพัฒนาแอพพลิเคชั่นแล้วคุณสามารถตรวจสอบเวอร์ชั่นได้โดยตรงโดยใช้สิ่งต่อไปนี้

python manage.py runserver --version


6

Django จะใช้เวอร์ชันของ Python ที่ระบุโดยตัวแปรสภาพแวดล้อม PYTHONPATH คุณสามารถใช้echo $PYTHONPATHในเชลล์เพื่อพิจารณาเวอร์ชันที่จะใช้

รุ่นของโมดูลที่ใช้โดย Django จะเป็นรุ่นของโมดูลที่ติดตั้งภายใต้รุ่น Python ที่ระบุโดย PYTHONPATH



4

คุณสามารถทำได้โดยไม่ต้อง Python เพียงพิมพ์สิ่งนี้ในไดเรกทอรี Django ของคุณ:

cat __init__.py | grep VERSION

และคุณจะได้รับสิ่งที่ชอบ:

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

1
นี่เป็นสิ่งที่ยอดเยี่ยมเมื่อคุณไม่ต้องการเปิดใช้งาน env เสมือนเพื่อรับค่าหรือคุณใช้บางอย่างเช่น AWS Elastic Beanstalk และไม่สามารถเปิดใช้งาน env เสมือนได้
rjferguson

1
@rjferguson คุณไม่จำเป็นที่จะต้องเปิดใช้งาน env ของคุณจะทำ/pip freeze python -c "import <module>; <module>.VERSION"คุณสามารถอ้างอิง: /path/to/env/bin/python -c "<command>"หรือถ้าคุณต้องการที่จะติดตั้งใช้งาน pip / /path/to/env/bin/pip freezeสิ่งเดียวกัน ฉันใช้สิ่งนี้ตลอดเวลาโดยเฉพาะอย่างยิ่งเมื่อฉันลงชื่อเข้าใช้ในฐานะรูทและรหัสแอปพลิเคชันทั้งหมดของฉันทำงานอย่างที่www-dataฉันทำ: sudo su www-data -c "/path/to/env/bin/pip install <module>"และไม่กระพริบตา (ฉันรู้ว่านี่เกือบ 2 ปีต่อมาและคุณคงรู้แล้วตอนนี้ - นี่เป็นอีกสำหรับผู้ชายคนต่อไป)
Javier Buzzi

> without Python >> python -c
Alex Babak

4

มีโมดูล utils ที่ไม่มีเอกสารใน django

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

โดยที่คุณสามารถรับเวอร์ชันปกติเป็นสตริงหรือ tuple เวอร์ชันโดยละเอียด:

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

4

รุ่น Django หรือแพ็คเกจอื่น ๆ

เปิดเทอร์มินัลหรือพรอมต์คำสั่ง

ชนิด

pip show django

หรือ

pip3 show django

คุณสามารถหา
ตัวอย่างแพ็คเกจรุ่น ...

pip show tensorflow

pip show numpy 

ฯลฯ ....


ฉันชอบความเรียบง่ายของคำตอบนี้ดีที่สุด pip freezeแสดงให้เห็นถึงอึพิเศษมากมายหากคุณได้ pip ในแพ็คเกจจำนวนมาก
DukeSilver


3

ฉันคิดว่าวิธี pythonic มากที่สุดคือ:

>>> 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 ได้โดยการรันคำสั่งต่อไปนี้ใน shell prompt

หลาม -m django - รุ่น

หากติดตั้ง Django แล้วคุณจะเห็นเวอร์ชั่นไม่เช่นนั้นคุณจะได้รับข้อความแจ้งข้อผิดพลาดว่า "ไม่มีโมดูลชื่อ django"


1

คุณสามารถนำเข้า django จากนั้นพิมพ์คำสั่งพิมพ์ด้านล่างเพื่อรับทราบรุ่นของ django ie ที่ติดตั้งบนระบบของคุณ:

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

หากต้องการตรวจสอบว่า Python สามารถมองเห็น Django ได้ให้พิมพ์ 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

ทำไม downvote นี้?
Azima
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.