2

基本的に、インストールおよび追加される特定のアプリケーションのバージョンを知る必要があります

INSTALLED_APPS = (
    ...
    'the_application',
    ...
)

ピップフリーズを使用できることを知っています。現在の仮想環境でのアプリケーションのバージョンを知っています。

問題は、2つのバージョンのthe_applicationをサポートしたいということです。

settings.INSTALLED_APP ['the_application']。get_version()のようなものが私が探しているものになります...

4

3 に答える 3

7

モジュール/アプリは通常、モジュールレベルの__version__属性を介してそのバージョンを公開します。例えば:

import gunicorn
print gunicorn.__version__ # Prints version

import haystack
print haystack.__version__ 

いくつかの注意事項があります:

  • 保証されていません。小切手
  • アプリがバージョンを公開する「形式」は異なります。たとえば、上記の最初の印刷'0.15.0'は私のテストシステムで印刷されました。(2, 0, 0, 'beta')同じシステムで印刷された2番目のもの。
于 2012-10-30T18:39:13.457 に答える
4

これは、アプリケーションがバージョン管理をどのように管理しているかによって異なります。たとえば、チェックできるdjango-tagging タプルVERSIONget_version()と、文字列関数を返すaがあります。したがって、バージョンを確認したい場合は(実行時にライブで)、次のようにします。

import tagging
print tagging.get_version() # or print tagging.VERSION for the tuple
于 2012-10-30T18:35:20.087 に答える
0

Ngure Nyagaに感謝します!あなたの答えは私をもう少し助けてくれましたが、それは私にvesrionを置く場所を教えてくれません

しかし、この答えはこれをどこに置くべきかを教えてくれません__version__

そこで、開いているアプリケーションを調べました。このバージョンはdjangodebugtoolbarに表示されます。django restframeworkコードを調べたところ、次のことがわかりました。

バージョンは__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ます: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を使用する場合:

ちなみに、IAmはビルドとバージョン管理にbuildoutとzest.releaserを使用しています。

この場合、上記は少し異なります(ただし、基本的に同じ考えです)。

http://zestreleaser.readthedocs.org/en/latest/versions.html#using-the-version-number-in-setup-py-and-as-versionを参照してください

setup.pyのバージョンは、setup.pyによって自動的に番号が付けられるため、次のようにし__init__.pyます。

import pkg_resources

__version__ = pkg_resources.get_distribution("fill in yourpackage name").version
VERSION = __version__  # synonym
于 2013-04-17T08:35:21.327 に答える