2016-11-22 95 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

相关问题