6

我正在尝试使用 pipenv 和 pytorch。

要在 Windows 中安装 pytorch,我必须将以下代码写入 Pipfile:

[packages]
torch = {file = "http://download.pytorch.org/whl/cpu/torch-0.4.1-cp37-cp37m-win_amd64.whl"}

但是,对于 linux,wheel 文件是不同的。

[packages]
torch = {file = "http://download.pytorch.org/whl/cpu/torch-0.4.1.post2-cp37-cp37m-linux_x86_64.whl "}

如何在 Pipfile 中同时指定它们?

4

1 回答 1

1

本文演示了如何构建您的跨平台Pipfile使用。pytorch我调整了他们的示例以处理whl本地文件系统上的文件:

[packages]
pyfoo = {path = "./../pyfoo/dist/pyfoo-1.1.0-cp37-cp37m-linux_x86_64.whl", platform_system = "== 'Linux'"}
pyfoo-win = {path = "./../pyfoo/dist/pyfoo-1.1.0-py3-none-any.whl", platform_system = "== 'Windows'"}

在这种情况下,pyfoo是一个使用python setup.py buildand构建的内部库python setup.py bdist_wheel

本文使用某种pipenv生成的哈希代替pyfoo-win. 我无法强制pipenv生成该哈希,所以我创建了自己的字符串。它可能只是锁定文件中哈希的前缀。

注意:这种方法对我有用,但有一个缺点:whl安装软件包时两个文件都需要存在。pipenv sync如果其中一个丢失,炸弹就会消失,即使它实际上只需要两个之一。有趣的是,无关文件的内容似乎并不重要。在我的 linux 机器上,我echo 'hello' >对 windows whl 文件做了一个处理,并且pipenv对它很满意。

于 2019-10-08T18:56:58.623 回答