2013-04-23 25 views
3

我們在構建系統中大量使用virtualenv和pip來隔離我們的Python交付。一切都是完全自動化的,直到現在一切正常。如何保護你自己在包裝上失蹤?

幾天前,出現了一個問題:間接依賴關係已移至專用bitbucket存儲庫,並且pip開始提示輸入登錄名/密碼。對於持續集成工具來說這是一個戲劇性的問題......並且在某些時候,同樣的依賴關係已從pypi中刪除,所以我們不能再安裝我們的環境。

在幾句話中,pip開始提示輸入用戶名/密碼,這很快就令人痛苦(所有的自動化工具都永遠懸在......)。而從今天起,它只是失敗。

我想知道如何有更可靠的東西。正如我猜想任何人都可以從pypi中刪除一個軟件包,完全依賴它是不安全的,對吧?我正在使用緩存,並認爲這足夠了,但顯然它總是嘗試連接到互聯網來檢查包的存在。

這裏推薦什麼?我是否應該手動下載所有內容,並且只能通過setup.py中的變量「dependency_links」引用本地路徑?還是有更聰明的東西?

謝謝! 靈光

+0

避免張貼鏈接,因爲他們可能會在一段時間後不可用,並且它很難爲用戶重建問題 – Cris 2013-04-23 07:30:22

+1

@Cris,好的完成:-) – CanardMoussant 2013-04-26 07:17:10

回答

1

在現實中,還有一個更嚴重的危險:PIP通過普通的HTTP下載的軟件包,最終即使你強迫它使用HTTPS,就不能查身份證的證書是有效的(因爲Python STDLIB沒有功能)。這是中間的人可以用你願意安裝的東西掩蓋預期的包(有時用sudo)。這就是爲什麼在生產環境中,只安裝單獨下載和已經檢查的軟件包是一個好主意。

+1

很酷的感謝!最後,我安裝了一個本地pypi服務器,我可以監控和維護,它工作正常:-) – CanardMoussant 2013-04-26 07:18:02