如何为在开发平台上不可用的软件包生成requirements.txt文件?

3
我正在尝试为我的 Python 项目生成 requirements/dev.txtprod.txt 文件。我正在使用 pip-compile-multi 将它们从 base.indev.inprod.in 文件生成。一切都进行得很顺利,直到我在 prod.in 文件中添加了 tensorflow-gpu==2.0.0a0。当我这样做时,就会出现以下错误:RuntimeError: Failed to pip-compile requirements/prod.in

我认为这是因为 tensorflow-gpu 只能在 Linux 上使用,而我的开发机是 Mac。(如果我运行 pip install tensorflow-gpu==2.0.0a0,就会被告知没有适用于我的平台的分发版。)我是否有办法为无法在我的平台上使用的软件包生成 pip 的 requirements.txt 文件?明确一点,我的目标是使用类似于 pip-compile-multi 的工具(因为这将版本化依赖项),生成一个只能在 Linux 上安装的 requirements.txt 文件,但我希望能够在任何平台上实际地生成该文件。

4个回答

2
使用PEP 496中的环境标记: PEP 496。最初的回答。
tensorflow-gpu==2.0.0a0; sys_platform!='darwin'

这让我达到了一个不中断的点,但实际上并没有在生成的requirements.txt文件中包含tensorflow-gpu。我想要做的是使用像pip-compile这样的工具在我的Mac上运行,为Linux生成一个requirements.txt文件。除非这是一个错误的目标... - BombSite_A

1
您可以在Docker容器中运行pip-compile-multi。这样,您就可以在Mac或其他开发机器上运行它,并在Linux下运行它。作为一个一行命令,它可能看起来像这样:docker run --rm --mount type=bind,src=$(pwd),dst=/code -w /code python:3.8 bash -c "pip install pip-compile-multi && pip-compile-multi"
我没有使用过pip-compile-multi,所以我不确定如何调用它。也许您需要向该命令添加一些参数。根据您的设置复杂程度,您可以考虑编写一个Dockerfile,并简化一行命令。

0

目前pip-tools不支持此功能,在Github上有一个开放问题。 pip-compile-multi的作者建议使用一种解决方法:在Linux机器上生成linux.txt,然后将其静态链接到非生成的linux-prod.txt中,如下所示。

-r prod.txt
-r linux.txt

-1

1
问题是如何生成适用于MacOS的requirements.txt文件,因为该软件包在该平台上不可用。 - phd
我认为Mac版本是pip install tensorflow==2.0.0a0。我这么说的原因是因为像这里所描述的那样,MacBook没有启用CUDA:https://apple.stackexchange.com/questions/93354/is-my-mac-book-pro-suitable-for-cuda - Anurag Saxena
问题是如何将 tensorflow-gpu==2.0.0a0 包含在 requirements.txt 中,以便 requirements.txt 在 MacOS 上正常工作。 - phd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接