如果要求没有上传二进制文件,如何安装 Python 依赖项

How to install Python dependency if requirement doesn't have binaries uploaded

我在使用 Pipenv 和 Pip 工具时遇到 locking/installing 依赖项问题。

问题:

我的一个依赖项是 NewRelic,它在 implementation 中没有将特定版本固定到 Protobuf 库。

当我锁定依赖项时,生成 Pipfile.lock 甚至 requirements.txt 和散列,它将 Protobuf 固定到 3.12.1,截至今天,这是最新的版本。

碰巧,出于某种未知原因,Protobuf 没有与我的环境兼容的版本,因此安装失败。

我如何在我的 Pipfile 中指定 Protobuf 的版本或使锁解析最新的 兼容 版本?

编辑:还有一个未解决的GitHub issue关于Protobuf问题。

正如 Albert 所建议的,解决方案是将失败的库显式添加到需求文件中,固定到与第一个库的版本兼容并且在 PyPI 上有 sdist 的版本。

pip 很聪明,在解析子需求时,可以看到库已经存在,不会再去取,解决问题。