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

0pt   2018-08-10 18:43
IT技術情報局

この記事では、PipenvでmacOS/Windowsで異なるインストール処理をするパッケージがある場合について、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

と、インストール方法が異なります。

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を置きましたので、参考にしてください。

Source: python tag

   ITアンテナトップページへ
情報処理/ITの話題が沢山。