2016-01-13 34 views
0

我有一系列的開發爲Python的雞蛋插件駐留在以下目錄結構的顛覆庫源編輯安裝:Python的點子 - 從在setup.py指定的其他本地依賴性

├───project1 
│ ├───app_plugin 
│ │  setup.py 
│ │ 
│ ├───plugin1 
│ │ │ setup.py 
│ │ │ 
│ │ └───python 
│ │  │ __init__.py 
│ │  │ 
│ │  └───package 
│ │    code.py 
│ │    __init__.py 
│ │ 
│ └───plugin2 
└───project2 
    └───plugin3 

我然後有一個活躍的virutalenv,並希望使用pip執行app_plugin的可編輯安裝,並將其從源代碼依賴關係(plugin1,plugin2,plugin3)執行到virtualenv的站點包中。

如果這只是app_plugin蛋進行安裝,如果它只有PyPI上可用的依賴關係,我可以使用這個命令點子:因爲依賴是本地源目錄和不

pip install -e project1/app_plugin 

然而上傳到PyPI的包,pip找不到它們。

依賴關係可以很容易地使用setuptools進行單獨安裝/開發,但其中有數百個,我需要依賴關係遞歸解決,並且能夠像主應用程序插件一樣繼續開發它們。

以前(在pip存在之前),我們有一個腳本,它採用了主應用程序的依賴關係,並使用setup.py develop安裝它們,pip -e應該是這樣做的,但只適用於單個蛋。

可以用pip來做到這一點,從本地解決依賴關係以及PyPI的依賴關係嗎?

回答

0

如果你會考慮使用蟒蛇輪(the new python packaging standard)而不是雞蛋,那麼,如果我正確地理解你的問題,它可以以相當直接的方式完成。

步驟1)編譯每個插件和您的應用程序作爲車輪

python setup.py bdist_wheel 

步驟2)創建與所有你的車輪

步驟3)從你的virtualenv緩存的車輪將應用程序安裝一個駕駛室目錄

pip install --use-wheel --no-index --find-links=/tmp/wheelhouse app_plugin 

欲瞭解更多信息,請參閱: Usage of cached wheelswheelhouse package(此駕駛室包年齡不是必需的,我還沒有嘗試過,但可能會有所幫助)。

注意:這不是針對您的問題的直接解決方案,而是一種可以自動化的解決方案,我相信可以解決潛在的問題。

+0

謝謝@benj。作爲車輪安裝的所有我的sdist是否仍然可編輯? – afunkyrobot

+0

@afunkyrobot,點子輪在選項下提到可編輯的安裝模式(https://pip.pypa.io/en/latest/reference/pip_wheel/#id7)。但我不確定這是否適用於駕駛室目錄。我錯過了標題中的「可編輯」位。 – benj

+0

或者,您可能需要考慮編寫一個bash腳本,通過搜索目錄逐個安裝所有依賴項。不是一個理想的解決方法。 – benj

相關問題