【Python】環境にパッケージを一括インストール

全く同じPython環境を複数のサーバ環境に構築しなければいけない場面は、少なくないと思います。例えば開発環境、テスト環境、ステージング環境、本番環境で同じPython環境を構築する場合です。

その環境に多数のパッケージをインストールしなければならない場合、手間になるだけではなくインストール抜けといったトラブルも付きまといます。特に環境をコピーする際はパッケージのバージョンを指定しなければならないケースがほとんどで、さらにミスを招きかねません。

そこで活用できるのがパッケージの一括インストールです。この方法を知っていれば、コピー元のパッケージ一覧を出力し、コピー先の環境に同じパッケージを一括でインストールすることができます。

Anacondaの場合

パッケージ一覧の出力

Anaconda Promptを開き、コピー元の環境をアクティベートします。

activate [環境名]

パッケージの一覧はyamlファイルとして出力します。以下コマンドにてファイルを出力します。

conda env export > [ファイル名].yaml

yamlファイルはメモ帳等で開くことができ、開くとパッケージの一覧を確認することができます。

下記にyamlファイルの中身の例を載せます。パッケージ名とそのバージョンが記録されています。

name: env1
channels:
  - defaults
dependencies:
  - blas=1.0=mkl
  - bottleneck=1.3.5=py310h9128911_0
  - bzip2=1.0.8=he774522_0
  - ca-certificates=2022.10.11=haa95532_0
  - certifi=2022.9.24=py310haa95532_0
  - intel-openmp=2021.4.0=haa95532_3556
  - libffi=3.4.2=hd77b12b_4
  - mkl=2021.4.0=haa95532_640
  - mkl-service=2.4.0=py310h2bbff1b_0
  - mkl_fft=1.3.1=py310ha0764ea_0
  - mkl_random=1.2.2=py310h4ed8f06_0
  - numexpr=2.8.3=py310hb57aa6b_0
  - numpy=1.23.3=py310h60c9a35_0
  - numpy-base=1.23.3=py310h04254f7_0
  - openssl=1.1.1s=h2bbff1b_0
  - packaging=21.3=pyhd3eb1b0_0
  - pandas=1.4.4=py310hd77b12b_0
  - pip=22.2.2=py310haa95532_0
  - pyparsing=3.0.9=py310haa95532_0
  - python=3.10.6=hbb2ffb3_1
  - python-dateutil=2.8.2=pyhd3eb1b0_0
  - pytz=2022.1=py310haa95532_0
  - setuptools=65.5.0=py310haa95532_0
  - six=1.16.0=pyhd3eb1b0_1
  - sqlite=3.39.3=h2bbff1b_0
  - tk=8.6.12=h2bbff1b_0
  - tzdata=2022f=h04d1e81_0
  - vc=14.2=h21ff451_1
  - vs2015_runtime=14.27.29016=h5e58377_2
  - wheel=0.37.1=pyhd3eb1b0_0
  - wincertstore=0.2=py310haa95532_2
  - xz=5.2.6=h8cc25b3_0
  - zlib=1.2.13=h8cc25b3_0
prefix: C:\Users\user1\.conda\envs\env1

パッケージの一括インストール

Python環境を新たに作成するサーバ(PC)に先ほどのyamlファイルを持ってきます。

そしてAnaconda Promptを開き、コピー先の仮想環境をアクティベートします。そして以下のコマンドを実行します。

このとき、yamlファイルを配置しているパスに移動したうえで実行することを忘れないようにしてください(または絶対パスでファイル名を指定)。

conda env create -f  [ファイル名].yaml

これでコピー先の環境にパッケージをインストールすることができます。インストール後はconda listでパッケージ一覧を確認しておきましょう。

pipの場合

パッケージ一覧の出力

仮想環境をアクティベートしたうえでfreezeコマンドを使うと、インストール済みの全パッケージのバージョン付きリストを取得することができます。

以下のようなコマンドとすることで、取得したリストをファイルとして出力することができます。ファイル名はrequirements.txtとすることが一般的です。

pip freeze > requirements.txt
blas=1.0
bottleneck=1.3.5
bzip2=1.0.8
ca-certificates=2022.10.11
certifi=2022.9.24
intel-openmp=2021.4.0
libffi=3.4.2
mkl=2021.4.0
mkl-service=2.4.0
mkl_fft=1.3.1
mkl_random=1.2.2
numexpr=2.8.3
numpy=1.23.3
numpy-base=1.23.3
openssl=1.1.1s
packaging=21.3
pandas=1.4.4
pip=22.2.2
pyparsing=3.0.9
python=3.10.6
python-dateutil=2.8.2
pytz=2022.1
setuptools=65.5.0
six=1.16.0
sqlite=3.39.3
tk=8.6.12
tzdata=2022f
vc=14.2
vs2015_runtime=14.27.29016
wheel=0.37.1
wincertstore=0.2
xz=5.2.6
zlib=1.2.13

パッケージの一括インストール

Python環境を新たに作成するサーバ(PC)に先ほど出力したrequirements.txtを持ってきます。以下コマンドを実行することで、requirements.txt内に記載のあるパッケージがインストールされます。

pip install -r requirements.txt

インストール後はpip listでパッケージがインストールされたことを確認しておきましょう。

【参考】ファイルの自作

先に紹介したyamlファイルやrequirements.txtは自作することもできます。例と同じようなフォーマットでファイルを作成して環境に取り込めばOKです。

パッケージのバージョンを指定しない場合、最新のバージョンがインストールされます。

Pythonでデータサイエンスするなら

Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。

ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^

初学者の方にはこちらもオススメです^^

まとめ

Anaconda、pipそれぞれでパッケージを一括でインストールする方法を紹介しました。

環境をメンテナンスするうえでパッケージ管理は必須です。確実に環境を移植するためにも、是非かつようください。

ではでは👋