2011-01-29 3 views
1

ビルド中の卵に実際に依存するいくつかのパッケージをインポートしようとしています。これらの卵はチーズストアではありませんので、私は私のsetup.pyスクリプトで私nstall_requires = ['pack1', 'pack2']を使用することはできないですので、私は私のビルドアウト設定へ次のようにそれらを追加しようとしています:buildout MercurialRecipeが複数のインポートを破る

1 [buildout] 
    2 develop = . 
    3 parts = 
    4  python 
    5  pack1 
    6  pack2 
    7 
    8 extra_paths = ${pack1:location}/src/ 
    9  ${pack2:location}/src/ 
10 
11 [python] 
12 recipe = zc.recipe.egg 
13 eggs = myegg 
14 extra-paths = 
15  ${buildout:extra_paths} 
16 
17 interpreter = python 
18 
19 [pack1] 
20 recipe = mercurialrecipe 
21 repository = https://repo.xxx.com/hg/pack1/ 
22 
23 [pack2] 
24 recipe = mercurialrecipe 
25 repository = https://repo.xxx.com/hg/pack2/ 

私がやっているかもしれないがこれは間違った方法です - 私はビルドアウトから始まっています。私は私のビン/ビルドアウトを実行すると、私は次のエラーを取得:

Updating python. 
Updating pack1. 
pack1: Pulling repository https://repo.xxx.com/hg/pack1/ and updating /home/martin/proj1/parts/pack1 
pulling from https://repo.xxx.com/hg/pack1/ 
searching for changes 
no changes found 
Installing pack2. 
pack2: Cloning repository https://repo.xxx.com/hg/pack2/ to /home/martin/proj1/parts/pack2 
While: 
    Installing pack2. 

    An internal error occurred due to a bug in either zc.buildout or in a 
    recipe being used: 
    Traceback (most recent call last): 
     File "/home/martin/proj1/eggs/zc.buildout-1.5.2-py2.6.egg/zc/buildout/buildout.py", line 1805, in main 
     getattr(buildout, command)(args) 
     File "/home/martin/proj1/eggs/zc.buildout-1.5.2-py2.6.egg/zc/buildout/buildout.py", line 584, in install 
     installed_files = self[part]._call(recipe.install) 
     File "/home/martin/proj1/eggs/zc.buildout-1.5.2-py2.6.egg/zc/buildout/buildout.py", line 1297, in _call 
     return f() 
     File "build/bdist.linux-x86_64/egg/mercurialrecipe/__init__.py", line 50, in install 
     commands.clone(ui.ui(), get_repository(self.source), self.destination) 
     File "build/bdist.linux-x86_64/egg/mercurialrecipe/__init__.py", line 18, in get_repository 
     return hg.repository(ui.ui(), location) 
     File "/usr/lib/python2.6/site-packages/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/hg.py", line 96, in repository 
     repo = _lookup(path).instance(ui, path, create) 
     File "/usr/lib/python2.6/site-packages/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/httprepo.py", line 203, in instance 
     return statichttprepo.instance(ui, "static-" + path, create) 
     File "/usr/lib/python2.6/site-packages/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/statichttprepo.py", line 146, in instance 
     return statichttprepository(ui, path[7:]) 

私はPACK1とPACK2を切り替える場合は、PACK2がインストールされます。基本的に両者は正常に動作しますが、両方をフェッチするとすぐにすべてが破損します。

ありがとうございます。 Martin

答えて

3

mr.developerをビルドアウトの外部SCM管理の依存関係に切り替えることをお勧めします。 mr.developerでは、Mercurialリポジトリ、Git、Bazaar、Darcs、Subversion、さらにはCVSリポジトリからの依存関係(卵など)を取得できます。これらの依存関係は、他のPythonの卵がsetup.pyに依存する開発卵として扱うことができます。今、mr.developerで

[sources] 
pack1 = hg https://repo.xxx.com/hg/pack1/ 
pack2 = hg https://repo.xxx.com/hg/pack2/ 

あなたを:あなたは[sources]セクションを使用してリソースに関するmr.developer伝える

[buildout] 
extensions = mr.developer 

は増築拡張として、それを追加し、mr.developerを使用するにはこれらのリポジトリを管理するためのコマンドラインツールを入手してください。それらをチェックアウトし、更新し、そして最も重要なことに、それらを構築のための開発の卵として構築することができます。自動的なソースをチェックアウトし、それらを開発卵として組み込まれてい、[buildout]セクションでauto-checkoutオプションでそれらを一覧表示するには

[buildout] 
extensions = mr.developer 
auto-checkout = 
    pack1 
    pack2 

あなたが今PACK1とPACK2の両方をビルドアウト実行するとは、チェックアウトされます卵として構築され、他の場所で依存関係として使用された場合、それらの依存関係を埋めるために使用されます。したがって、 'pack1'または 'pack2'のいずれかがeggs行にリストされている場合、またはsetup.pyの別のeggの依存としてある場合、zc.buildoutはmr.developerによってチェックアウトされたバージョンを選択します。

bin/developerコマンドラインツールでは、これらのオプションを完全に制御できます。PyPI page for mr.developerをお読みください。

+0

ありがとうMartjin。私は開発者に切り替えました。それは魅力のように機能します。あなたはsetup.pyの依存関係としてpack1をリストする方法を説明してもらえますか?私は、チーズショップにある卵についてはsetup.pyに依存関係をリストアップすることができましたが、他の場所にある卵には依存しません。ありがとうございましたagain Martjin – Martin

+0

pack1がeggの場合、名前が定義されているsetup.pyがあります。通常、これは通常setup.pyが置かれているディレクトリ名と同じですが、それは与えられていません。 'name =" somename "'を探してください。これは卵の名前です。PyPiに格納されている卵のように使用します(通常、最近はcheeseshopと呼ばれていません)。 –

関連する問題