ERROR: Could not find a version that satisfies the requirement cryptography (from versions: none)
ERROR: No matching distribution found for cryptography
ERROR: Could not find a version that satisfies the requirement pillow (from versions: none)
ERROR: No matching distribution found for pillow
2条答案
按热度按时间shstlldc1#
您可能使用的
pip
版本至少为20.3或更高,而CF中的构建包可能使用的pip
版本低于20.3。根据this文档,只有pip
版本20.3及更高版本才能理解manylinux_x_y
标记,这就是你的cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl
文件是如何被标记的(manylinux_2_24
)。cryptography
有相同版本的其他wheel,但是有其他标签,较低版本的pip
可以理解,但是你没有下载它们,因为你的pip
版本理解manylinux_x_y
标签。从屏幕截图中显示的其他wheel文件来看,您的构建包必须使用
pip
版本19.0或更高版本,因为它成功地处理了带有manylinux2010
标记的bcrypt
。要提供CF能够找到的正确的wheel,请在下载命令中使用标志
--platform manylinux2010_x86_64
。如果它使用的是pip
版本19.3或更高版本,您可以使用标志--platform manylinux2014_x86_64
。cryptography
的wheel带有这些标签中的任何一个,当前版本(v35.0.0)和您尝试使用的版本(v3.4.8)。lf5gs5x22#
我遇到过类似的错误,我的PCF python buildpack无法找到我从其他环境下载到供应商文件夹(“vendored”)的一些依赖性whl文件。在我的例子中,我使用的是GitLab CI/CD管道阶段,它有一个Docker映像,我在其中pip下载文件到供应商文件夹。类似于:
其中
--index-url
指定了一个私有存储库来获取包,--no-binary=:none:
为pip提供了优先选择wheel而不是源代码发行版的选项,-d vendor
将wheel放在了一个vendor目录中即使pip版本和python版本在我的docker映像和python buildpack之间匹配,python 3.10.5和pip 22.1.2(cf python_buildpack 1.7.56),docker映像下载的whl似乎与python buildpack不兼容。
cf push
触发python构建包中供应商提供的pip install
后,它产生了此错误。导致问题的下载车轮为:加密技术-38.0.4-cp 36-abi 3-多个Linux操作系统_2_28_x86_64.whl
枕头-9.3.0-cp 310-cp 310-多个内衬_2_28_x86_64.whl
我注意到我的其他依赖项的whl文件是vendoring和工作良好,他们之间的主要区别是这两个包含
manylinux_2_28
.其他whl文件似乎有较低的版本.这个数字是指glibc版本的平台需要的whl见https://peps.python.org/pep-0600/#core-definition的细节.所以看起来我把whls下载到vendor文件夹的docker镜像在linux平台上有一个比我的python buildpack更新的glibc版本,结果我指定了一个linux平台,当下载这两个依赖项时,这个平台看起来可以为我的其他whl文件工作,类似于:
对我来说,这解决了问题,我认为这是因为glibc在docker和python buildpack之间是不同的,因为新的工作whls是manylinux_2_17:
加密技术-38.0.4-cp 36-abi3manylinux_2_17_x86_64.manylinux2014_x86_64.whl
枕头-9.3.0-cp 310-cp 310-多个Linux操作系统_2_17_x86_64.多个Linux操作系统2014_x86_64.whl
如果您不确定某个平台是否存在wheel,可以指定备用平台,如下所示。我已经提供了它们的示例。https://pip.pypa.io/en/stable/cli/pip_download/