ฉันต้องใช้PythonและDjangoสำหรับแอปพลิเคชันของเรา ดังนั้นฉันจึงมี Python สองเวอร์ชัน 2.6 และ 2.7 ตอนนี้ฉันได้ติดตั้ง Django แล้ว ฉันสามารถเรียกใช้แอปพลิเคชันตัวอย่างเพื่อทดสอบ Django ได้สำเร็จ แต่ฉันจะแน่ใจได้อย่างไรว่า Django ใช้เวอร์ชัน 2.6 หรือ 2.7 และโมดูลที่ Django ใช้เวอร์ชันใด

ตอบ

Django 1.5 รองรับ Python 2.6.5 และใหม่กว่า

หากคุณใช้ Linux และต้องการตรวจสอบเวอร์ชัน Python ที่คุณใช้อยู่ ให้เรียกใช้python -Vจากบรรทัดคำสั่ง

หากคุณต้องการตรวจสอบเวอร์ชัน Django ให้เปิดคอนโซล Python แล้วพิมพ์

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

โดยพื้นฐานแล้วเหมือนกับคำตอบของ bcoughlanแต่นี่เป็นคำสั่งที่เรียกใช้งานได้:

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

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

$ django-admin --version
3.2.6

ไปที่โฮมไดเร็กทอรีโครงการDjangoของคุณและทำ:

./manage.py --version
>>> import django
>>> print(django.get_version())
1.6.1

ฉันกำลังใช้IDLE (Python GUI)

หากคุณมีpipคุณก็สามารถทำ a . ได้เช่นกัน

pip freeze
และจะแสดงเวอร์ชันส่วนประกอบทั้งหมดของคุณรวมถึง Django

คุณสามารถไพพ์ผ่าน grep เพื่อรับเฉพาะเวอร์ชัน Django นั่นคือ,

[email protected]:~/code/djangosite$ pip freeze | grep Django
Django==1.4.3

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

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

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

$ python --version

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

$ which python

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

$ python -m django --version

สำหรับหลาม :

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

มีหลายวิธีในการรับเวอร์ชัน 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

(โปรดแก้ไขคำตอบนี้หากคุณมีการแก้ไขบางอย่างหรือต้องการเพิ่มข้อมูลที่เกี่ยวข้องเพิ่มเติม)

สำหรับการตรวจสอบโดยใช้ Python shell ให้ทำดังต่อไปนี้

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

หากคุณต้องการทำในเชลล์ Unix/Linux ด้วยบรรทัดเดียว ให้ทำ

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

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

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

เพียงพิมพ์python -m django --version หรือพิมพ์pip freezeเพื่อดูเวอร์ชันของโมดูลที่ติดตั้งทั้งหมดรวมถึง Django

พิมพ์ CMD หรือเทอร์มินัลของคุณ:

python -m django --version

เวอร์ชั่น Django หรือเวอร์ชั่นแพ็คเกจอื่น ๆ

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

พิมพ์

pip show django

หรือ

pip3 show django

คุณสามารถค้นหาแพ็คเกจเวอร์ชันใดก็ได้...

ตัวอย่าง:

pip show tensorflow

pip show numpy

ฯลฯ....

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

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

เรียกใช้pip listในเทอร์มินัล Linuxและค้นหา Django และเวอร์ชันในรายการ:

ทำงานpip freezeบน cmd บน Windows

มี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)

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

cat __init__.py | grep VERSION

และคุณจะได้รับบางอย่างเช่น:

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

หลังจาก django 1.0 คุณทำได้

$ django-admin --version
1.11.10

วิธี 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เวอร์ชันนี้ ฉันเห็นด้วยกับ James Bradbury :

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

หากคุณต้องการเปรียบเทียบเวอร์ชัน 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

คุณสามารถรับเวอร์ชัน django ได้โดยเรียกใช้คำสั่งต่อไปนี้ในเชลล์พรอมต์

python -m django --version

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

พิมพ์คำสั่งต่อไปนี้ใน Python shell

import django
django.get_version()

รุ่น Python รองรับโดย Django version

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)

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

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

เปิด CMD หรือ Terminal แล้วเรียกใช้คำสั่งใดๆ ต่อไปนี้

django-admin --version
        or
python3 -m django --version
        or
pip freeze

ใส่คำอธิบายภาพที่นี่มันง่ายมากในการเปิด CLI (บรรทัดคำสั่งหรือ IDE ใด ๆ ) ทุกที่ที่คุณติดตั้ง python และ Django เพียงแค่พิมพ์

django-admin --version

ดูที่นี่ ฉันได้ติดตั้ง Python และ Django ล่าสุดในระบบของฉันแล้ว และผลลัพธ์จะแสดงในรูปที่

มีอีกสองวิธีในการรับเวอร์ชัน (ของ Django และแพ็คเกจอื่นๆ) ทั้งคู่ต้องการตัวแปรเวอร์ชันสำหรับแพ็คเกจเพื่อรับเวอร์ชัน ตามPEP-396ควรตั้งค่า __version__variable สำหรับทุกโมดูล Python


วิธีที่ 1 - รับเวอร์ชันจากระบบไฟล์

ด้วยเหตุนี้ คุณรู้วิธีรับเวอร์ชันสำหรับแพ็คเกจ Django/Python เกือบทุกแพ็คเกจ ดูภายใน __init__.py ของรูทแพ็คเกจ ดังนั้นหากคุณสามารถนำทางผ่านระบบไฟล์ได้อย่างรวดเร็ว นี่อาจเป็นวิธีสากลในการรับเวอร์ชันของแพ็คเกจใดๆ ภายในแพ็คเกจไซต์ของคุณ (สภาพแวดล้อมเสมือน)


วิธีที่ 2 - Django Debug Toolbar

มีเครื่องมือที่มีประโยชน์มากที่จะเรียกว่าเป็นDjango แถบเครื่องมือแก้ปัญหา หากคุณใช้ (แนะนำมากสำหรับการพัฒนา Django) คุณสามารถระบุเวอร์ชันของแอปทั้งหมดที่มี package.__version__

django-debug-toolbar-versions

ไปที่การตั้งค่าของโครงการ Django ค้นหาเวอร์ชัน Django ของคุณ