2016-11-22 81 views
1

我有以下找不到滿足的要求枕頭== 2.7.0

Pillow==2.7.0 

我下載這樣的離線模式的要求就行了requirements.txt文件版本,並把它放在供應商導演

pip install --download vendor -r requirements.txt 

此文件Pillow-2.7.0-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel下載到我的vendor目錄

但是,當我嘗試部署(推送)我的應用程序,我得到下面的錯誤:

Collecting Pillow==2.7.0 (from -r requirements.txt (line 4)) 
Could not find a version that satisfies the requirement Pillow==2.7.0 (from -r requirements.txt (line 4)) (from versions:) 
No matching distribution found for Pillow==2.7.0 (from -r requirements.txt (line 4)) 

我使用Python Buildpack部署應用程序到Cloud Foundry本文檔以下http://docs.cloudfoundry.org/buildpacks/python/index.html#vendoring

+2

它似乎是下載英特爾MacOS 10.9版本的軟件包,這不太可能與您運行CloudFoundry的系統相同。 –

+0

@DanielRoseman剛纔看到您的評論,同樣的事情感到驚訝。似乎是一種奇怪的部署方法。 – Ray

+0

我會打起來的Cloud Foundry支持/幫助下,這不可能是他們已經看到了這樣的事與他們正在採取 – Ray

回答

1

UPDATE:另一篇文章指出,如何可以指定到最新版本點子標誌不拉的二進制文件(其中我假設是問題)。如果這解決了問題,那麼你應該選擇他的職位作爲解決方案。我也想捅一下雲底,只是需要指出這一點。

--download選項只是爲依賴項下載文件,但實際上並未安裝它(這可能導致爲什麼該標誌已被棄用,以擺脫這種困惑)。

PIP下載替換 - 表格下載選項來安裝點子,這是現在使用,將在PIP被刪除10

這是同樣作爲新:

pip download .... 

https://pip.pypa.io/en/stable/reference/pip_download/

現在假設您的雲提供商正在閱讀requirements.txt文件,並將自己置於供應商文件夾中進行安裝(a-not-明智的做法),你可能會遇到任何二進制文件,符號鏈接等問題,除非你部署的環境與本地環境相匹配。部分包裝系統如pip和需求文件的想法是如此不同的平臺可以爲其特定的架構,操作系統等拉下所需的庫...

這種方法有很多事情可能會出錯...

例如,您的mac可能使用不區分大小寫的文件系統。如果cloudfoundry使用的是Linux,那麼區分大小寫。在Mac上,如果將這些文件全部保存爲小寫字母,這並不重要,但在將文件複製到期望匹配Capitlized「P」的Linux系統時可能會出現問題。

+0

我瞭解,該辦法的第一次。我指的是這個http://docs.cloudfoundry.org/buildpacks/python/index.html#vendoring – Anthony

+0

@Anthony我明白了。所以你不希望他們安裝,你正在使用的服務。奇怪的設置爲做到這一點,因爲你的PIP拉本地版本將不匹配遠程部署 – Ray

+0

假設它不僅僅是代碼,但二進制文件和這樣 – Ray

1

在例如在http://docs.cloudfoundry.org/buildpacks/python/index.html#vendoring你可以看到下面的評論

廠商所有的點子與* .tar.gz爲供應商/

*.tar.gz包源代碼包,而最新版本的PIP下載二進制包默認情況下。要強制PIP下載源代碼軟件包使用--no-binary :all:如果你想下載的二進制包,你必須從pip downloaddocumentation指定目標平臺按照這句話:

pip download--platform--python-version--implementation--abi選項提供了讀取 依賴關係的解釋和系統比 點子上運行之外的其他能力。 --only-binary=:all:使用任何的 這些選項時需要。要注意的是,這些選項都默認 到當前系統/解釋器,而不是最嚴格的 約束(例如任何平臺,ABI沒有,等等)。爲了避免獲取 依賴關係正好匹配當前 解釋(但不是你的目標之一)的約束,建議指定 所有這些選項,如果要指定其中之一。

+0

啊,數字,因爲他們沒有更新文件使用新的'點擊下載'語法這是錯過了。他應該試試這個,它會將二進制文件/本地系統的任何問題都排除在外 – Ray