Как указать файлы колес для ОС в Pipfile

Я пытаюсь использовать pipenv и pytorch.

Чтобы установить Pytorch в Windows, я должен написать следующие коды в Pipfile:

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

Тем не менее, файл колеса отличается для Linux.

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

Как указать их обоих в Pipfile?

0 ответов

В этой статье показано, как структурировать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 build а также python setup.py bdist_wheel.

В статье используется какой-то pipenv сгенерированный хеш вместо pyfoo-win. Я не мог принуждатьpipenvдля генерации этого хэша, поэтому я создал свою собственную строку. Это может быть просто префикс хеша в файле блокировки.

Примечание: этот подход работает для меня, но есть недостаток: обаwhl файлы должны присутствовать при установке пакетов. pipenv syncбомбы, если один из них отсутствует, даже если на самом деле нужен только один из двух. Интересно, что содержимое нерелевантного файла не имеет значения. На моей Linux-машине я сделалecho 'hello' > в файл Windows WHL и pipenv был доволен этим.

Другие вопросы по тегам