2014-04-24 64 views
0

我正在研究一種公司內部有大量python依賴項的產品,該產品不允許服務器與外部機器聯繫。任何企圖規避這一規則的行爲都將受到嚴厲的判斷。在公司防火牆後面使用文件系統目錄而不是pypi?

該應用程序通過批處理腳本(它是32位窗口)部署到virtualenv中。此批處理腳本(理想)應該做的無非

# Precondition: Source code has been checked-out into myprog/src 
cd myprog/src 
setup.py install # <-- fails because of dependencies 
myprog.exe 

問題就來了與管理的依賴 - 因爲它是不可能的服務器連接到外面的世界我唯一的解決辦法是有劇本的easy_install各自的在開始安裝程序的依賴,這樣的事情:

cd myproc/deps/windows32 
easy_install foo-1.2.3.egg 
easy_install bar-2.3.4.egg 
easy_install baz-3.4.5.egg <-- works but is annoying/wrong 
cd ../../myprog/src 
setup.py install 
myprog.exe 

我希望做的是讓這個在setup.py腳本知道在哪裏可以獲取它的依賴而來。理想情況下,這應該設置爲命令行參數或環境變量,這樣我不會將相關性的位置硬編碼到項目中。

理想情況下,我想讓所有的雞蛋都成爲'發行版'目錄的一部分:這可以在網絡驅動器上,在網絡服務器上共享,甚至可以部署到每個目錄上的本地文件夾服務器。

可以這樣做嗎?

+0

您可以嘗試設置您自己的部分鏡像; [PyPI源代碼](https://bitbucket.org/pypa/pypi)可用。我沒有發佈這個答案,因爲我從未真正嘗試過。 –

回答

2

我知道你在尋找的是這些選項pip--no-index--find-links

--no-index 
--find-links /my/local/archives 
--find-links http://some.archives.com/archives 

文檔是here

+0

這不是我想要的:我沒有運行pip實用程序,我運行setup.py,因爲主應用程序被部署爲源代碼。有什麼建議麼? –

+1

但是,如果您的應用程序具有'setup.py'腳本,則可以通過'pip install --ignore-installed .'而不是'setup.py install'進行安裝。你能檢查一下嗎?如果這樣的話,'pip'將會遵守你應用程序的所有列出的依賴關係。或者,您可以在安裝應用程序之前創建文件'requirements.txt',放置所有需求並運行'pip install -r requirements.txt --no-index --find-links

的路徑'' 。 – Palasaty