2012-07-16 31 views
3

我有一個python蛋版本的問題。在我的開發機器上,我有python-ldap版本2.3.13,而他們機器上的大學版本有2.3.10。兩個python-ldap庫都安裝在os級別上。zc.buildout版本

是否可以告訴構建不尋找最新的python-ldap版本?

我正在尋找這樣的事情:

# using buildout-versions extension 
[versions] 
python-ldap = any 
or 
python-ldap => 2.1 

我不喜歡用buildout -N,因爲我想獲得其他雞蛋最新版本。

回答

3

擴建只讓你銷(精確)版本使用versions部分:

[buildout] 
versions = myversions 

[versions] 
python-ldap = 2.3.13 

其中用於引腳的versions關鍵在[buildout]部分名稱的部分(大部分只是調用部分[versions]以及)。

如果您需要將其固定到不同機器之間的版本,則必須使用基於外部參數生成版本的配方。

在下面的例子中我使用mr.scripty recipe運行一些蟒蛇取版本引腳對我來說:

[buildout] 
versions = versions 

[versions] 
python-ldap = ${dynamic:python-ldap} 

[dynamic] 
recipe = mr.scripty 
python-ldap = 
    ... import subprocess 
    ... return subprocess.check_output(
    ... 'dpkg-query', '-W', '-f', '${Version}', 'python-ldap').rsplit('-')[0] 

上面的例子使用的dpkg-query實用程序來確定蟒,LDAP包的版本Debian或Ubuntu;根據需要爲自己的平臺進行調整。

+0

哇,看起來很聰明。我認爲有更簡單的方法來獲得'import ldap; LDAP .__ version__'。 – aisbaa 2012-07-16 14:22:28

+0

@aisbaa:還好。 :-)無論什麼技術適合你,訣竅在於首先使用動態部分來生成信息。 – 2012-07-16 14:23:33