PythonではPandasやOpenCVをはじめとして、便利なパッケージが多数提供されています。それらは通常ネットワークを経由してAnacondaやpip等のリポジトリからインストールします。
しかし、時にはネットワークの繋がらない閉鎖的な環境にPython環境を構築する必要もあり、その際はリポジトリからパッケージをインストールすることができません。
そんなときのために、Pythonではファイルからパッケージを環境にインストールすることができます。このとき使用するファイルはwheelファイルと呼ばれ、拡張子が.whlのファイルです。
今回はwhlファイルを使ってオフライン環境でPythonパッケージをインストールする方法を紹介します。
wheelファイルとは
wheelファイルとは、ZIPフォーマットのアーカイブファイルです。ZIPフォーマットのため、ZIPファイルと同様に解凍して使用します。
Pythonでパッケージを配布する形式は大きく2種類あり、wheelはBuild Distributionと呼ばれる配布形式です。その名の通りビルド済みの配布物で、ユーザは所定の場所に解凍して配置するだけで使用することができます(ビルドの必要なし)。
ちなみにもう一つの配布形式はSource Distributionと呼ばれ、こちらはソースコードをそのままzipやtarで配布されます。そしてユーザがインストールした際にビルドします。pip install numpyのようなコマンドで実行するパッケージのインストールは、このSource Distribution形式です。
wheeeは解凍ツールを使用してPython環境のsite-packagesにファイルを解凍することでインストールすることもできますが、pipコマンドを介してインストールすることもできます(本稿はこの方法を紹介します)。
wheelファイルを準備する
まずはインストールするパッケージのwheelファイルを用意する必要があります。PyPIのサイトからダウンロードすることができます。Numpyを例に見てみます。
PyPIのNumpyのページを覗くと、以下のような画面になっています。「ファイルをダウンロード」を押します。
するとバージョンごとのwhlファイル一覧が出てくるので、必要なバージョンのwhlファイルをダウンロードします。
wheelファイルを環境にインストールする
ファイルを用意したら、Pythonの環境にインストールします。ファイルを配置したディレクトリに移動し、以下のコマンドを実行します。今回はnumpy-1.23.4-pp38-pypy38_pp73-win_amd64.whlをインストールするケースです。
pip install --no-deps numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl
なお、現状condaコマンドはwheelとの互換性はありません。Anacondaを利用している場合でも、condaコマンドではなくpipを使う必要があるので注意してください。
not a supported wheel on this platform. エラーが出る場合
.whlをインストールしようとした際、場合によっては以下のようなエラーが出ることがあります。
pip install numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl
>>
ERROR: numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl is not a supported wheel on this platform.
これは、インストールしようとしているwheelファイルがインストールしようとしている環境に適していないために出るエラーです。
wheelファイルはそのファイルが作成された環境に依存しており、パッケージをインストールする際に導入対象の環境に適したwhlを指定する必要があります。たとえば上記のNumpyのファイルリストには、pp38やcp311といった種類があることがわかります。
ざっくりと、cp311とはPython3.11に対応しているといった具合です。
どの種類がその環境に対応しているかを調べるには、以下プログラムを実行します。
from pip._internal.utils.compatibility_tags import get_supported
get_supported()
>>
[<cp310-cp310-win_amd64 @ 1971702228096>, <cp310-abi3-win_amd64 @ 1971702230464>,
<cp310-none-win_amd64 @ 1971702230720>, <cp39-abi3-win_amd64 @ 1971702091776>,
<cp38-abi3-win_amd64 @ 1971702230976>...]
cp310やcp39など、その環境でサポートされるcp一覧を取得できます。これに一致するwhlファイルをインストールすることで、エラーを防げるはずです。
Pythonでデータサイエンスするなら
Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。
ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^
初学者の方にはこちらもオススメです^^
まとめ
wheelを使ってオフライン環境にPythonパッケージをインストールする方法を紹介しました。wheel形式のインストールは当然オンライン環境でも可能です。
パッケージインストール方法のオプションとして知っておきたいところです。
ではでは👋