2011-06-24 209 views
347

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

+3

最短方式 - 'python3 -m django的--version' –

回答

425

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

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

如果你想检查Django的版本,打开一个Python控制台,然后输入

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

对于替代地格式化输出,可以做'打印(django.get_version())'这将返回类似于'1.6.5'编辑:我只是注意到这是由MTech下面说。 –

+0

大多数模块都具有'.__ version__'希望有一个PEP来保持它的一致性,而不是'.VERSION'和'.get_version()'这两个都只是我看过的django。 – dashesy

+2

@dashesy它看起来像从Django 1.8开始,你可以使用'django .__ version__'来获取版本以及'django.VERSION'和'print(django.get_version())'。 –

5

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

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

293

基本上一样bcoughlan的答案,但在这里它是一个可执行的命令:

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

这比最上面的答案要方便得多。谢谢。 – Regnarg

+2

这是迄今为止最优雅的答案! – Picrasma

28

如果你有pip,你也可以做一个

pip freeze
,它会显示你的Django版本。

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

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

不是每个人都有点 - 使用python或manage.py的其他解决方案更好。 – sww314

+1

在SO永远不会描述答案“下面”,因为他们经常成为答案“之上”:) – neuronet

135

如果您已经安装了应用程序:

$ django-admin.py version 
2.0 
+3

我希望我可以upvote这个答案再次。比进入Python控制台简单得多... – sfletche

+7

同样,'python manage.py version'也可以。 –

+2

这个答案完全被低估。多谢,伙计! –

8

对于使用Python的外壳检查,做到以下几点。

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

如果你想用一个线做它的Unix/Linux的壳,然后做

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

一旦你开发的应用程序,那么你可以直接使用下面的检查版本。

python manage.py runserver --version 
42
>>> import django 
>>> print(django.get_version()) 
1.6.1 

我使用IDLE(Python的GUI)。

60

转到您的Django项目的主目录,并做到:

./manage.py --version 
+1

为什么这不是我无法想象的最佳答案。 – Bobble

+0

Upvoted为简短和简单的答案。 – RLD

4

你可以不用太的Python。就在你的Django目录键入:

cat __init__.py | grep VERSION 

,你会得到这样的:

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

当你不想激活虚拟env来获得价值,或者你正在使用类似AWS Elastic Beanstalk的东西,并且无法激活虚拟env时,这非常棒。 – rjferguson

+1

@rjferguson你不需要激活你的env来做一个'pip freeze' /'python -c“import ; .VERSION”'。你可以简单地引用它:'/ path/to/env/bin/python -c“”'或者你想安装/使用pip,同样的事情:'/ path/to/env/bin/pip freeze'。我一直都在使用它,特别是当我以根用户身份登录并且所有应用程序代码都以'www-data'身份运行时:'sudo su www-data -c“/ path/to/env/bin/pip “安装”',甚至不眨眼。 (我知道这是近2年后,你可能现在知道 - 这是更多的下一个家伙) –

+0

>没有Python >> python -c –

4

进入控制台,输入:

django-admin --version 
+1

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 –

+0

@UwePlonus再看看其他答案,并告诉我他们与我的不同之处有多大,这使他们成为一个合适的答案。 –

32

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

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

如何使用'django.VERSION',它已经成为一个元组?我很确定'django.VERSION> =(1,8)'将始终按照预期工作。 – Flimm

2

如果你想Django的版本比较,你可以使用django-nine(PIP安装Django十九)。例如,如果在您的环境中安装的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 
33

键入以下内容:

django-admin.py version 

如果安装的django它将打印其当前版本(例如1.6.5
否则壳将输出错误消息。

+1

这是最简单的问题解决方案。 – Deepend

+0

上面的一个答案的转贴 – brotherperes

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

它肯定得到任何包的版本号的最佳途径!

也有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 
24

正如你说你有两种版本的Python,我以为他们是在不同的virtual environments(例如venv)或者可能是conda environments

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

通过Unix/Mac的终端,你可以检查你的Python版本如下:

$ python --version 

如果你想知道源:

$ which python 

,并检查Django的版本:

$ python -m django --version 
5

在LINUX TERMINAL上运行pip list并查找Django及其版本在Windows

CMD上牛逼

运行pip freeze

1

如果你是在一个虚拟的环境中工作,只是PIP冻结会告诉你,如果不是你可以使用这个

django-admin --version 
9
django-admin --version 
python manage.py --version 
pip freeze | grep django 
+0

他们都工作得很好 –

+0

你需要使用'python manage.py --version'注意双'-' – Shawnzam

+0

@Shawnzam当然是一个错字..非常感谢..答案编辑 –

0

你可以得到的Django版本通过在shell提示符下运行以下命令:

python -m django --version

如果安装了Django,您应该会看到该版本,否则您会看到一个错误,提示“No module named django”。

1

类型在Python以下命令壳

import django 
django.get_version()