エンドポイントに到達する方法はたくさんあります。コンドーム自体は何ですか?
condaのバージョン情報の真実のソースは、のconda/__init__.py
です。あなたが提案するように、プログラムでPythonコードの中にfrom conda import __version__
としてロードすることができます。これは、コマンドラインpython setup.py --version
は、その情報を取得するための標準的な方法であるからして、(あまりにもthis codeに注意してください)もsetup.py
hereにハードワイヤードです。真実のわれわれの情報源を使用して構築されたパッケージのバージョンを設定しますbuild.sh
にライン
$PYTHON setup.py --version > __conda_version__.txt
を入れcondaビルドのバージョン1.xでは
、。 __conda_version__.txt
ファイルは、代わりにであり、conda-build 2.0のリリースで削除される可能性があります。最近のバージョンのconda-buildでは、これを行うための好ましい方法はをjinja2コンテキスト内で使用することです。setup.py
のすべてのメタデータにアクセスできます。具体的には、meta.yaml
ファイルでは、我々は今、__version__
変数はあなたsee in the source codeがauxlib.packaging.get_version()
への呼び出しで何conda/__init__.py
...
に設定されているどのようにこの
package:
name: conda
version: "{{ load_setup_py_data().version }}"
のようなものを持っていると思います関数。この関数は、
- は、ファイル
conda/.version
のために最初に見えるために、次の処理を行い、およびバージョン識別子としてのコンテンツを返した場合
- は、次の
VERSION
環境変数を探し、および設定されている場合は、バージョンとして値を返します識別子
git describe --tags
出力で見納め、可能であればバージョン識別子を返します(Gitがインストールされている必要があり、などなど、Gitのレポでなければなりません)
- 上記降伏バージョン識別子のどれかの、
None
を返します3210
もう1つの最後のトリックがあります。 condaのsetup.py
fileでは、我々はauxlib.packaging
によって提供されるものとbuild_py
とsdist
ためcmdclass
を設定します。基本的に我々は__version__
変数は文字列リテラルにハードコードされ、そしてauxlib.packaging.get_version()
機能を使用しないように、これらの特殊なコマンドクラスは、実際に建て/インストールされたパッケージにconda/__init__.py
ファイルを変更
from auxlib import packaging
setup(
cmdclass={
'build_py': packaging.BuildPyCommand,
'sdist': packaging.SDistCommand,
}
)
を持っています。あなたのケースでは
、リリースごとにタグを付けたくないと、あなたは上記のすべてを使用することができ、コマンドラインから
VERSION
環境変数を使用してバージョンを設定しました。あなたの
build
セクションmeta.yamlレシピで
VERSION=1.0.0alpha1 conda build conda.recipe
ような何か、あなたはビルド環境にすべての方法を通じてVERSION
環境変数を渡すためにcondaビルドを伝えるためにscript_env
キーを追加必要があります。
build:
script_env:
- VERSION
私はgitタグで解決しました*と*私は私のsetup.pyに特別なコマンドを追加して、いくつかのパッケージツールでバージョンアップしました。 (Inno Setup for Windows)、私の 'version.py'を使って、gitコミットとタグを必要としていました。 – daveydave400