Help us understand the problem. What is going on with this article?

OSごとに異なるインストール処理をするPipfileの作成方法(具体例:PyTorch v0.4.1)

More than 1 year has passed since last update.
(An English translation is available here.)

この記事では、PipenvでOSごとに異なるインストール処理をするパッケージがある場合において、Pipfileの書き方について説明します。

具体例として、PyTorch v0.4.1について、macOS/Windowsに両対応するPipfileを作成します。

はじめに

多くのパッケージでは、インストール方法はOSによらず共通です。例えば、numpyであれば、

pipenv install numpy

とすればOKです。

しかし、例えば、PyTorch v0.4.1については、macOSでは、

pipenv install torch

ですが、Windowsでは、

pipenv install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-win_amd64.whl 

と、インストール方法が異なります。(この例では、PyTorchのインストールオプションとして、Python 3.6のCUDAなしバージョンを使うものとします。)

Pipfileでは、macOSであれば前者の処理、Windowsであれば後者の処理をするように書く必要があります。どのようにすれば実現できるのでしょうか?

方法

sys_platformを指定すればOKです。Pipenvの公式ドキュメントに、特にWindowsのみpywinusbをインストールする例について記載があります。

PyTorch v0.4.1については、私が使っているPipfileでは、次のようになります。

[[source]]

url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"


[packages]

theano = "*"
tensorflow = "*"
keras = "*"
numpy = "*"
scipy = "*"
matplotlib = "*"
seaborn = "*"
jupyter = "*"
jupyterlab = "*"
ipython = "*"
pandas = "*"
scikit-learn = "*"
spyder = "*"
pillow = "*"
torch = {version = "==0.4.1", sys_platform = "== 'darwin'"}
"b4b7455" = {file = "http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-win_amd64.whl", sys_platform = "== 'win32'"}
torchvision = "*"


[dev-packages]

pylint = "*"


[requires]

python_version = "3.6"

[packages]

torch = {version = "==0.4.1", sys_platform = "== 'darwin'"}
"b4b7455" = {file = "http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-win_amd64.whl", sys_platform = "== 'win32'"}

で、sys_platform = "== 'darwin'"がmacOSの場合、sys_platform = "== 'win32'"がWindowsの場合を意味しています。

なお、"b4b7455"は、Windows上でpipenv install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-win_amd64.whlを実行すると、Pipfileに記載されます。その状態のPipfileに、sys_platform = "== 'win32'"を追記します。

GitHubにpipenv_cross-platform_exampleというリポジトリを作成し、PipfileとPipfile.lockを置きましたので、参考にしてください。

TomoyukiAota
Stack Overflow: https://goo.gl/o3i9Do dev.to: https://dev.to/tomoyukiaota
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away