2012-10-19 47 views
12

是否有可能在已知駐留在本地文件系統上的setup.py中指定(可編輯)源依賴項?如何使setuptools(或分發)從本地文件系統安裝軟件包

考慮下面的目錄結構,所有這些都住在一個獨立的VCS庫:

projects 
    utils 
    setup.py 
    ... 
    app1 
    setup.py 
    ... # app1 files depend on ../utils 
    app2 
    setup.py 
    ... # app2 files depend on ../utils 

鑑於以下命令:

cd projects 
mkvirtualenv app1 
pip install -e app1 

我想有對APP的所有依賴包括「utils」,這是一個「可編輯」的依賴關係。同樣,如果我對ap​​p2也一樣。

我試過用file://... URL中的所有不同組合玩install_requiresdependency_links都無濟於事。我想使用一個依賴鏈接URL,如src+file://../utils,它會告訴setuptools包的來源位於相對路徑的文件系統上。有沒有辦法做到這一點?

+0

這可能有一些幫助:http://packages.python.org/distribute/setuptools.html#dependencies-that-aren-t-in-pypi –

+0

謝謝,羅布。在問這個問題之前,我廣泛回顧了那個頁面。該頁面列出了兩類網址:(1)直接下載網址;(2)包含直接下載鏈接的網頁網址。我希望我的問題屬於第一類,但我無法弄清楚如何構建URL。 – millerdev

+4

我提交了一個[patch to pip](https://github.com/pypa/pip/pull/719)來支持'dependency_links'中的'file:'URL,這解決了我的問題。希望它很快就會合並。 – millerdev

回答

0

當我想與一組相互關聯的項目一起工作時,我使用/setup.py develop安裝了所有這些項目。

如果我錯了或者以後想要編輯一個可以編輯pip的模塊,我可以克隆源代碼,並且也可以使用python setup.py develop來代替現有的源代碼。

爲了確保,我刪除了virtualenv的站點包和引用包本身的引用。

2

我有一個相同的問題,我需要依賴兄弟文件夾中的模塊。我能夠在跌跌撞撞https://caremad.io/2013/07/setup-vs-requirement/

我結束了requirements.txt專指我想要的文件,然後安裝一切與

pip install -r requirements.txt 

requirements.txt後找到一個解決方案

-e ../utils                                          
-e . 

而且setup.py有我所有的依賴性,包括utils的。當pip嘗試自己安裝app1時,它意識到utils依賴項已經被填充,並在安裝其他需求的同時傳遞給它。

+0

requirements.txt工作中的相對路徑,以防您進入目錄並執行命令...在父目錄中執行相同的命令將不起作用。 pip requirements.txt文件的相對路徑規範存在問題https://github.com/pypa/pip/issues/3772 – infinityLoop

相關問題