Python パッケージは、別の Python パッケージの特定のバージョン管理リビジョンに依存できますか?

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

質問

一部の便利な Python パッケージは pypi 上で壊れており、唯一許容されるバージョンはリビジョン管理システムの特定のリビジョンです。それは次のように表現できるだろうか setup.py 例えば

requires = 'svn://example.org/useful.package/trunk@1234' ?

役に立ちましたか?

解決

あなたは2つのことを行う必要があります。まず、あなたが望む正確なバージョン、例えばが必要です。

install_requires = "useful.package==1.9dev-r1234"
その後、

とは、それを見つけるために場所を指定するdependency_linksの設定が含まれます:

dependency_links = ["svn://example.org/useful.package/trunk@1234#egg=useful.package-1.9dev-r1234"]

#egg=のURL必見のバージョンdependency_links部分はの正確のあなたはinstall_requiresで指定したものと一致することに注意してください。これは、2つの部分をリンクするものです。

何が起こるかというとsetuptoolsのは、リンク上で#eggタグを見て、パッケージの正確なバージョンをダウンロードURLとしてURLを保存していることです。それはその要件後で解決しようとすると次に、それは正確なSVN URLをダウンロードする必要があります。

(ただし、このために、の本当に仕事は、目標とSVNのリビジョンが実際にその名前とバージョンを持つ卵を構築しなければならない。そうでなければ、あなたの依存関係が実行時に失敗します!だから、この実際にはあなたが彼らのデフォルトのビルドバージョン番号での使用SVNのリビジョンタグに依存しているパッケージ場合は動作します。)

他のヒント

あなたが本当に別のパッケージの無名のバージョンを必要とし、他のバージョンで行うようにする方法はありません場合は、

、あなたは単にあなた自身と、パッケージのバージョンを配布する場合があります。もしあなたのバージョンが使用されているものであることを保証するために、独自の名前空間に必要な置くことを。

私はsetup.pyからこれを参照する方法を考え出したていないが、pipは、単純な要件ファイルとPythonパッケージの特定のリビジョンをチェックアウトすることができます。要件ファイルと呼ばれるrequires.txtで、pip install -r requires.txtは、そのファイル(およびその依存関係)に記載されているすべてのパッケージをインストールします。

ここに私の要件ファイルの一部です。 -eで始まる行は、私のプロジェクトを含むバージョンコントロール(gitの、SVN、または水銀)からのパッケージの特定のリビジョンをチェックアウトし、編集可能な形でそれらをインストールします。 pip freezeリストは、すべてこの形式でパッケージをインストールします。

requires.txtます:

-e hg+file:///home/me/my-private-project#egg=myproject
-e hg+http://bitbucket.org/ianb/webob@tip#egg=WebOb
-e svn+http://svn.sqlalchemy.org/sqlalchemy/trunk@6638#egg=SQLAlchemy
-e svn+http://svn.zope.org/repos/main/z3c.saconfig/trunk@106508#egg=z3c.saconfig
## The following requirements were added by pip --freeze:
APScheduler==1.01
simplejson==2.0.9
... (many more)

あなたは、特定のバージョンのパッケージをリリースすることができますが、それらを一緒に配布する必要があります。自動的に標準のPythonでそれらをダウンロードする方法はありません。

ただし、ビルドアウトを使用して環境を再現することが可能となりbuildout.cfgを作成することができます。これは、チェックアウトし、あなたがmr.developerのような拡張機能を使用する場合、特定のリビジョンをインストールすることができます。

http://pypi.python.org/pypi/zc.buildoutする http://pypi.python.org/pypi/mr.developerする

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