如何在Pipfile中指定特定于OS的Wheel文件

时间:2018-08-16 11:55:22

标签: python pip pytorch pipenv pipfile

我正在尝试使用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中同时指定它们?

1 个答案:

答案 0 :(得分:0)

This article演示了如何构造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 buildpython setup.py bdist_wheel构建的内部库。

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

注意:此方法对我有用,但有一个缺点:安装软件包时,两个whl文件都必须存在。 pipenv sync会炸掉其中之一,即使它确实只需要两者之一。有趣的是,无关文件的内容似乎无关紧要。在我的Linux机器上,我对Windows whl文件做了一个echo 'hello' >pipenv对此感到满意。