2010-01-27 34 views
2

我有一個名爲Foo /的項目,它具有buildout.cfg和setup.py。現在又有一個名爲Bar/..的項目,它也有build.cfg和setup.py。由於Bar /依賴於各種Python模塊,因此它的setup.py文件中有install_requires=['lxml', 'SQLAlchemy']。 Foo /取決於Bar /。構建:通過mercurial包含另一個Python項目?

但酒吧/還沒有發佈。如何在Foo的構建中包含Bar /以便我可以導入Bar的模塊lxml和SQLAlchemy?

假設Bar /正在使用mercurial作爲其修訂控制系統。

我的嘗試Buildout mercurial recipe沒有太大的作用。它只克隆版本庫,但而不是自動獲取bar/setup.py中的install_requires的egg並將Bar /自身添加到sys.path中。

實際的例子:這裏是我的buildout.cfg樣子(酒吧== mercurialrecipe包):

[buildout] 
parts = ... pyrtm ... 
develop = . parts/pyrtm 
eggs = pyrtm 

[pyrtm] 
recipe = mercurialrecipe 
repository = http://bitbucket.org/srid/pyrtm 

... 

這不起作用,因爲sys.path中不包含路徑本地克隆mercurialrecipe(在parts/mr中),並且依賴項(來自parts/mr/setup.py)未安裝。

+0

下面是另一個面臨同樣問題的用戶:http://www.xml3k.org/LuisMiguel/PreparingBuildoutRecipe#UsingMercurialTODO – 2010-01-27 23:02:27

回答

0

如果你可以檢查出/克隆庫,那麼你就可以開發Python模塊和往常一樣:

[buildout] 
... 
develop = src/Bar 
eggs = Bar 
+0

不適用於我。如果有幫助,我已經用我的buildout.cfg的一部分更新了這個問題。 – 2010-01-27 23:54:16

+0

如果我在相應的部分下面列出了'Bar'蛋(我的示例中爲'mercurialrecipe'),那麼buildout會從PyPI下載它,而不是拾取本地副本。 – 2010-01-28 00:11:11

+0

嗯......開發的東西應該解決這個問題。奇怪的。我在這裏錯過了一些更精細的細節,我必須嘗試一下。 – 2010-01-28 05:33:14

-1

您使用的水銀配方,使您想要的善變配方的善變結帳用作開發雞蛋......這裏有一個巨大的循環依賴。

堆積需要mercurial recipe運行「mr」部分。所以它抓住了pypi的配方。它還不知道配方會實際下載配方。

+0

我只用'mercurialrecipe'作爲例子。這個問題很普遍,並且與其他軟件包一樣。無論如何,爲了避免這種困惑,我修改了上面的示例代碼。 – 2010-01-28 19:27:22

1

我發現去解決這個問題的唯一方法是通過添加額外的路徑,以擴建:

[buildout] 
parts = ... pyrtm ... 
develop = . parts/pyrtm 
eggs = pyrtm 

extra-paths = parts/pyrtm/src 
# or wherever your pyrtm folder 
# could as well be extra-paths = pyrtm/ 
# if you your code is on same path as buildout.cfg. 

[pyrtm] 
recipe = mercurialrecipe 
repository = http://bitbucket.org/srid/pyrtm 

希望這有助於。

相關問題