状況
開発中のソフトウェア製品は 2 つあります。API を提供するライブラリと、エンド ユーザーにライブラリを公開するGUIツールです。さらに、多くの技術スタッフが、関連するあらゆる種類のカスタム コード、ツール、アセットのビルディング ブロックとしてライブラリを使用することを期待しています。
両方のソフトウェア製品(ライブラリと GUI ツール)は活発に開発されており、相互に影響を与え合っています。どちらの場合も、 pipを使用して、最も簡単な配布方法と devenv セットアップが必要です。
pip install gui_tool
or
pip install library
GUI ツール (ユースケース 1)
GUI ツールのインストールはpipを介して行われ、依存関係はsetup.py内のハード バージョン番号で示されます。ライブラリは、これらの依存関係の 1 つです。
...
install_requires = ['library==1.2, package_x==0.3, package_y==0.6'],
...
インストール手順は、ツールをインストールし、依存関係を新しい virtualenv に解決することで構成されます。すべての依存関係のバージョンが固定されているため、安定した一貫したインストールを制御できます。ライブラリを手動で新しいバージョンに更新することで、開発者はナイトリー ビルド/ブリーディング エッジの依存関係を制御できます。
pip install --upgrade library # get the latest nightly build/hotfix release on your own
カスタム コード/ツール (ユース ケース 2)
前述のように、多くのコードとカスタム ツールは、ライブラリが提供する API を使用して構築される場合があります。それを使用したい人は誰でも、上からワンライナーを使用して簡単にpipを介してインストール/更新する必要があります。
問題
仲間のGUI ツール開発者は、pipを使用してライブラリ依存関係のナイトリー ビルド/ホットフィックス リリースを取り込むことができるはずです。ライブラリをどこかで構成要素として使用している他のスタッフは、常に pip を使用して最新の安定バージョンを取得する必要があります。XYZ バージョン管理を通じて、安定したバージョン、最新鋭のリリース、およびホットフィックス リリースを提供するライブラリに対して、1 つの独自のリリース手順を維持したいと考えています。
これには、次のような解決策がいくつかあります。
- pip を使用してインストールする必要がある安定したバージョンを示すカスタム ユーザー向けのreadmeを維持する
- または、 Gui ツールの setup.py 内にいくつかの魔法をセットアップして、git リポジトリを複製し、それをpython setup.py developを介して使用し ます (バージョニングは、リポジトリのチェックアウトを介して開発者が処理できます)。
ただし、これらのどれも特に洗練されているとは思えないので、Python の安定した/最先端/夜間ビルドの依存関係管理のためのソリューション、アイデア、またはベスト プラクティスに興味がありますか?