2014-02-22 57 views
5

嘗試將Django項目部署到Heroku上的新應用程序(該代碼在過去兩年中在其他實例上運行) - 並被此命中:Heroku上的新部署失敗,因爲「使用 - 允許未驗證的PIL允許」

Downloading/unpacking PIL==1.1.7 (from -r requirements.txt (line 7)) 

    Could not find any downloads that satisfy the requirement PIL==1.1.7 (from -r requirements.txt (line 7)) 

    Some insecure and unverifiable files were ignored (use --allow-unverified PIL to allow). 
    Cleaning up... 

    No distributions at all found for PIL==1.1.7 (from -r requirements.txt (line 7)) 
    Storing debug log for failure in /app/.pip/pip.log 

    !  Push rejected, failed to compile Python app 

我所知,最近在pip的變化,並希望使用是安全的包,但直到所有的都可以適當地包裝成每點的預期,我們需要一些解決方法。特別是缺乏 - 全部未經驗證的標誌使得這是一個反覆試驗而不是無痛部署的黑匣子練習。

有沒有一種理智的方式來克服這個障礙? (不只是PIL,但這是第一個失敗的包,還有其他幾個像pyPdf,如果我設法解決這個問題,將會失敗)

任何指針讚賞!

回答

20

我問了維護人員的點子,他回答了一個簡單的解決方案。我詳細說明了如何解決這個問題,作爲對我自己問題的迴應。這是你現在需要做的 - 直到包內部託管和驗證。

在本地計算機上創建一個新的虛擬環境,並在requirements.txt文件的頂部添加一行:

--allow-all-external

保存並運行:

pip install -r requirements.txt --download="~/temp/packages"

這是什麼意志只需從requirements.txt中取出每個軟件包名稱,然後將軟件包下載到~/temp/packages目錄中並進行驗證。

對於每一個驗證失敗,添加另一條線路requirements.txt,略低於第一線允許所有外部套餐包,那是這樣的:

--allow-unverified package-name

你可能要ping的維護者,以解決這個問題;)

繼續直到pip成功完成,然後將更新後的requirements.txt提交到vcs並進行部署。

這應該是全部。

+1

這僅僅是我還是一個耗時且痛苦的過程?如果你看看其他的工具,如npm或bundler,他們不會提供一個關於未經驗證的廢話......反正只是在咆哮...... –

+2

對於像我這樣的其他人:確保你使用的是最近版本的pip ....或者你可以試試這個並且失敗。我特意被告知當我這樣做時找不到一些版本。升級點本身讓我過去了。 – wilbbe01