Pythonの環境を管理・再現する
皆さんこんにちは
お元気ですか。3月末というのに、雪積もっていてすごかったです。
さて、本日はPythonでの環境の管理方法を紹介します。
今まではAnacondaを利用しており、それを利用してimport/exportする方法もあります。
これに加えて最近はPipenvも増えたようでもあり、それら紹介をします。
なぜ、環境の管理をする必要があるのか?
誰もが同じ環境を再現し、環境による問題を起こさないためです。
仕事やOSSで複数人でのプロジェクトで環境を統一しないと、依存ライブラリのバージョンによる問題が発生することもあります。
そのため、環境を統一することは非常に重要です。
環境構築の方法
本章では、大きく分けて3つの方法を紹介します。
1. requirement.txt
2. Anacondaの仮想環境
3. Pipenv
requirement.txt
古来からある方式であるrequirement.txtです。
未だにライブラリでも多く採用されている方式の一つです。
requeirement.txtはライブラリの名前が一覧で書いており、それを読み込むことで必要なライブラリをインストールできます。
requirement.txtの作り方は次の通りです。
pip freeze > requirement.txt
読み込み方は次の通りです。
pip install -r requirement.txt
この方法ですが、pipコマンドが実行できれば、実行可能なのがメリットです。
AnacondaやPipenvでもpipが利用できるので使えます。
ただ、Pythonのバージョンは管理できていないので、そこは一つネックになるポイントです。
Anacondaの仮想環境
Anacondaを用いて、仮想環境を作成できます。
基本的な利用方法は次の通りです。
nonbiri-tereka.hatenablog.com
Anacondaによる仮想環境の構築は次のコマンドで作成可能です。
conda create -n py38 python=3.8
その仮想環境の情報を出力するには次のコマンドを実行します。
conda env export > condatest.yml
出力されたファイルを読み込む方法は次の通りです。
conda env create -n py38_re -f condatest.yml
仮想環境ごと環境構築ができるのでPythonのバージョンも管理できるのが強みです。
ただし、Anacondaそのものをインストールせねばならず、ディスクの容量も必要とする点がネックでしょうか。
Pipenv
Pipenvが最近は利用されるようになっています。
まずは、pipenvをインストールします。
pip install pipenv
次にpipenvを利用した環境構築を行います。
pipenv --python 3.7 # python3.7での環境構築 pipenv install numpy scipy matplotlib
逆にPipenvの環境を取り込み、構築する場合は次の通りです。
Pipfileがあるディレクトリで、次のコマンドを入力します。
pipenv install
pipenvは導入までの時間が非常に早く、手軽に構築できるのが良い点だと感じました。
正直どれが一番なのか
どれも一長一短ですが、Pipenvが楽そうです。
Anacondaだとそのインストール自体も必要になり、導入コストが非常に高いと感じています。
また、requirement.txtのみだと、同一PC内での複数環境での管理が難しくなるので、避けたほうが良いと思っています。
最後に
これらそれぞれに利点欠点もあるため、ケースバイケースで考慮すべきでしょう。
このあたりは使いながら検討する必要があると感じています。