LoginSignup
5
8

More than 3 years have passed since last update.

Pythonの依存ライブラリをプロジェクトごとに管理し、別マシンでも一括インストールできるようにする方法

Last updated at Posted at 2019-05-10

記事概要

Pythonでtensorflowを実行するのに、サンプルによってバージョンを切り替える必要が出てきたのと、複数の環境で実行しようと思ったときに毎回必要ライブラリを一つずつインストールするのがかなり面倒だと感じた。
nodeJSのnpmみたいに個別にライブラリの管理ができるようにしたいと考え調べてみたらところ、venvを使えば実現できそうだったのでメモ。

仮想環境の作成

プロジェクト個別にモジュールを管理するにはvenvと呼ばれる仮想環境を作成する必要がある。仮想環境を作成するフォルダに移動し、以下のコマンドを入力することで環境を作ることができる。

#コマンドフォーマット
python -m venv [仮想環境名]
#コマンド例
python -m venv tutorial-env

実行時エラーが出た時の対処方法

上記コマンドを実行したところ、以下のようなエラーが出てしまいました。

コマンド実行時のエラー
$ python -m venv tutorial-env
Error: [Errno 2] No such file or directory: 'C:\\Program Files\\Python37\\lib\\venv\\scripts\\nt\\python_d.exe'

原因を調べたところ、以下のコピー元ディレクトリからコピー先ディレクトリに、対象ファイルをコピーすることで問題を解決することができた。
(この問題はすべての環境で発生するのかどうかは不明。まずはそのままコマンド実行し、エラーが出たら対応してください。)

コピー元ディレクトリ
C:\Program Files\Python37
コピー先ディレクトリ
C:\Program Files\Python37\Lib\venv\scripts\nt`

コピー対象ファイル
1) python_d.exe
2) python_d.pdb
3) pythonw_d.exe
4) pythonw_d.pdb

仮想環境の起動

以下のコマンドを実行することで仮想環境を起動することができます。これを実行した後にpipコマンドを実行すると仮想環境にライブラリが追加され、pythonコマンドを実行すると、仮想環境に登録されているライブラリのみが利用されます。

windows
tutorial-env\Scripts\activate.bat
linux_or_mac
source tutorial-env/bin/activate

実行が成功すると、以下のようにコマンドラインの先頭に(環境名)が追加される。
image.png

確認方法

コマンドライン上に仮想環境名が以下のように表示されている状態でpip install numpyを実行してみる。

コマンドライン
(tutorial-env) D:\git-repo\venvtest>

コマンド完了後、tutorial-envの配下にnumpyフォルダが作成されていればOK。

image.png

現在インストールされているパッケージの確認

以下のコマンドで、現在の環境にインストールされているライブラリの一覧を確認できる。

コマンド
pip list
実行結果
Package           Version
----------------- -------
astroid           2.2.5
colorama          0.4.1
isort             4.3.18
lazy-object-proxy 1.3.1
mccabe            0.6.1
pip               19.1.1
pylint            2.3.1
setuptools        40.8.0
typed-ast         1.3.5
wrapt             1.11.1

インストールされているパッケージ一覧を出力する

以下のコマンドで現在の環境にインストールされているライブラリの情報をテキストファイルをに出力できる。複数人で開発をする時や自分の作ったプログラムを外部公開する時などに便利。

コマンド
pip freeze > reqiurements.txt

出力したパッケージ一覧にあるパッケージを一括インストールする

依存ライブラリを一括インストールするときは、以下の様にfreezeコマンドで出力したファイルを-rの後に記述する。
:コマンド
pip install -r requirements.txt

実行結果
(tutorial-env) D:\git-repo\venvtest>pip install -r requirement.txt
Collecting joblib==0.13.2 (from -r requirement.txt (line 1))
  Using cached 
--省略--
repo\venvtest\tutorial-env\lib\site-packages (from astroid<3,>=2.2.0->pylint==2.3.1->-r requirement.txt (line 5)) (1.4.0)
Installing collected packages: joblib, numpy, scipy, scikit-learn, pylint
Successfully installed joblib-0.13.2 numpy-1.16.3 pylint-2.3.1 scikit-learn-0.21.0 scipy-1.2.1

参照ページ

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8