2011-02-01 50 views
1

如果是指定雞蛋應首先看pypi.python.org/在buildout.cfg指定優先取雞蛋

例如之前獲取的方式我想知道:

[buildout] 
find-links: 
    /home/eggs/ 

eggs = 
    foo 
    bar 

如果pypi上的foobar包的版本號高於位於/home/eggs/中的名爲foo的包,則buildout將嘗試從pypi下載包。我的foo和pypi foo完全不同,這是一個問題。

我找不到一種方法來使用命名空間或類似的東西,所以我想應該有一種方法來強制buildout使用某些軟件包而不是其他軟件包。

任何想法如何解決這個問題?

乾杯, 馬丁

回答

4

你應約束的雞蛋到特定版本,這樣你可以控制哪些雞蛋被用來運行擴建每一次:

[buildout] 
versions = versions 

[versions] 
foo = 1.0 
bar = 1.1 
spam = 1.0b2 

中的versions選項[buildout]部分可讓您命名包含軟件包版本引腳的部分。在這個例子中,我將其命名爲[versions],但您可以使用任何您喜歡的名稱;想象一下,如果你將一個[release1][release2]部分,versions選項指向任一個選擇一個特定的版本引腳組合。

當一個雞蛋被固定到這樣的特定版本時,只有該雞蛋版本可以滿足這個構建的要求。如果你的find-links指向一個包含該版本的位置,那麼egg將從那裏下載,而不是從PyPI下載。

還有2個擴展功能可以幫助管理版本引腳。首先是所謂allow-picked-versions默認擴建選項:

[buildout] 
allow-picked-versions = false 

默認設置爲true這意味着擴建可以選擇一個版本供您,否則滿足所有要求。當您將此設置爲false時,對於沒有版本引腳擴展的任何雞蛋都會拋出錯誤。使用它來檢測你是否需要靜止雞蛋。

另一種選擇是使用buildout.dumppickedversions擴展擴建:

[buildout] 
extensions = buildout.dumppickedversions 

當添加到您的buildout這樣,每次你運行你的擴建挑版本的列表末上市的時間,任何沒有固定的雞蛋,都是直接適用於您的構建配置的格式。這樣你就可以讓buildout找出使用的雞蛋,然後將它們固定在這些版本上。

+0

謝謝Martijn。真的有用一次:) – Martin 2011-02-02 19:09:35