SVNとdistutilsを使用してPythonパッケージにバージョン番号を割り当てるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/631813

  •  08-07-2019
  •  | 
  •  

質問

Pythonパッケージを作成しています。パッケージは内部でバージョン番号を知る必要がありますが、このバージョンは distutils setup.py スクリプトにも含まれています。

これを行う最良の方法は何ですか?したがって、バージョン番号を2つの別々の場所で維持する必要はありませんか?ライブラリの他の部分から setup.py スクリプトをインポートしたくない(それはかなり馬鹿げているように見える)し、 setup.py <からライブラリをインポートしたくない/ code>スクリプト(同様)。理想的には、 svn にキーワードを設定して、それを自動的にファイルに置き換えますが、それは svn では不可能なようです。両方の場所にバージョン番号を含む共通のテキストファイルを読むことができました。これが最良の解決策ですか?

明確にするため:バージョン番号を 1つの場所に維持したい。はい、変数をパッケージに入れ、再び setup.py ファイルに入れます。しかし、その後、必然的に同期が外れます。

役に立ちましたか?

解決

メインパッケージの内部には、おそらく __ init __。py がありますか?

ディレクトリ構造:

> ./packageTest
>   ./packageTest/__init__.py
>   ./packageTest/setup.py

__ init __。py ファイル内に、次の行を追加します。

# package directory __init__.py
__version__ = 1.0

setup.pyファイル:

# setup.py
from packageTest import __version__
...

パッケージディレクトリからインポートするモジュールで(packageTestを呼び出します)、これを行うことができます:

from packageTest import setup
print 'Setup.py version:', setup.__version__  
# prints Setup.py version: 1.0

他のヒント

セットアップスクリプトをパッケージ内にインポートするのはばかげています(特に、ライブラリのインストール後は存在しない可能性があるため)。ただし、setup.py内にライブラリをインポートすることは問題ありません。 別のテキストファイルでも機能しますが、実行時にバージョン番号にアクセスする場合は、パッケージにテキストファイルをインストールする必要があるという問題があります。

プロジェクトで同様の問題が発生しました。 build.py (distutilsベースではありません、気にしないでください)。 プロパティファイル、一元化されたバージョン番号が含まれます。 setup.pyファイルを直接維持する代わりに、テンプレートファイル、そしてbuild.pyスクリプトがそれを読み込み、バージョン変数をpropsファイルからの値に置き換えてから、setup.pyスクリプトを書き出します。次に、スクリプトファイルがそれを実行し、パッケージを生成するか、pypiにアップロードします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top