我一直在寻找这个完全相同的问题,并找到了您的问题。您接受的答案令我不太满意。
我正在使用 django debugtoolbar,在那里你还可以显示所使用的应用程序的所有版本。我想知道如何让我的自定义应用程序的版本也显示在那里。
进一步看,我发现了这个问题和答案:如何在运行时检查Django中已安装应用程序的版本? https://stackoverflow.com/questions/13145483/how-to-check-the-version-of-a-installed-application-in-django-in-running-time?rq=1
然而这个答案并没有告诉我把它放在哪里__version__
所以我查看了一个打开的应用程序,它确实显示在 django 工具栏中。
我查看了 django Restframework 代码,发现:
版本放在__init__.py
file
(see https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/init.py https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/__init__.py)
它在这里被写为:
__version__ = '2.2.7'
VERSION = __version__ # synonym
之后,在他的 setup.py 中,他从中获取了这个版本__init__.py
:
see: https://github.com/tomchristie/django-rest-framework/blob/master/setup.py https://github.com/tomchristie/django-rest-framework/blob/master/setup.py
像这样:
import re
def get_version(package):
"""
Return package version as listed in `__version__` in `init.py`.
"""
init_py = open(os.path.join(package, '__init__.py')).read()
return re.match("__version__ = ['\"]([^'\"]+)['\"]", init_py).group(1)
version = get_version('rest_framework')
使用 buildout 和 zestreleaser 时:
顺便说一句,我使用 buildout 和 zest.releaser 进行构建和版本控制。
在这种情况下,上面有点不同(但基本上是相同的想法):
see http://zestreleaser.readthedocs.org/en/latest/versions.html#using-the-version-number-in-setup-py-and-as-version http://zestreleaser.readthedocs.org/en/latest/versions.html#using-the-version-number-in-setup-py-and-as-version
setup.py中的版本是由setup.py自动编号的,所以在__init__.py
you do:
import pkg_resources
__version__ = pkg_resources.get_distribution("fill in yourpackage name").version
VERSION = __version__ # synonym