2010-01-18 58 views

回答

12

你需要做兩件事情。首先,需要你想確切的版本,例如:

install_requires = "useful.package==1.9dev-r1234" 

,然後包括dependency_links設置指定在哪裏可以找到它:

dependency_links = ["svn://example.org/useful.package/[email protected]#egg=useful.package-1.9dev-r1234"] 

注意,dependency_links URL的版本#egg=部分必須準確與您在install_requires中指定的內容相符;這是將兩部分連接在一起的原因。

會發生什麼事是看到setuptools的鏈路上的#egg標籤並保存URL作爲封裝件的精確版本可用的下載網址。然後,當它稍後嘗試解決該需求時,它應該下載該精確的SVN URL。 (注意,然而,對於這個到真的工作,有針對性的SVN修訂版必須實際上建立一個名稱和版本的蛋,否則,你的依賴將在運行時失敗!所以,這真的只適用於你這取決於包使用在其默認的內部版本號SVN版本標記。)

+1

是的,它沒有/真的/在普通情況下工作......我現在只是使用點子。 – joeforker 2010-03-15 20:55:18

+0

不應該「find_links」實際上是「dependency_links」嗎? – 2010-12-19 12:58:39

+0

謝謝,加百列。我修復了它。 – 2010-12-20 21:22:09

2

如果你真的需要另一個包的一個不起眼的版本,而且也沒有辦法讓不與其他版本中,你可能想簡單地分發版本的包與自己的。如有必要,請將它放在您自己的名稱空間中,以確保您的版本是使用的版本。

2

我還沒有想出如何從setup.py參考這一點,但pip可以檢查出Python包的特定版本用一個簡單的需求文件。通過一個名爲requires.txt的需求文件,pip install -r requires.txt將安裝該文件中列出的所有軟件包(及其依賴關係)。

這是我的需求文件的一部分。以-e開頭的行檢查版本控制(git,svn或mercurial)中包的特定版本(包括我的項目),並將它們安裝在可編輯的表單中。 pip freeze以此格式列出所有已安裝的軟件包。

requires.txt

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

你真的想擁有你的依賴的編輯形式? – 2012-06-01 19:06:53

+0

有時候我會的。 – joeforker 2012-06-04 15:11:49

相關問題