新着情報
Pythonの仮想環境について
Pythonの仮想環境作成に関するメモ
◎ 前提として、環境はなるべくインストールしてあるライブラリは少なくする。
ひとつの環境にアプリ開発するごとに様々なライブラリをインストールすると、使わないライブラリがインストールされていたり、いつの間にか設定が変わっていたりとプログラマーに混乱が生じる可能性がある。
「何が原因でエラーなのか分からない」時は、その原因を探すよりも全部アンインストールして、必要なライブラリだけインストールする方が早い。
仮想環境を使えば、複数の異なる環境を用意できるので、アプリケーション毎に必要なライブラリのみを導入した環境を用意する。この備忘録メモでは以下の事項について概略を説明する。
◎ 仮想環境を作る流れ
- (1)仮想環境の確認をする
- (2)使いたいライブラリがAnacondaに既にインストールされているかを確認する
- (3)使いたいライブラリのバージョンとpythonのバージョンを確認する
◎ 仮想環境を作る
◎ 仮想環境を起動する
◎ 仮想環境にライブラリを追加する
◎ 仮想環境を停止する
◎ 仮想環境を破棄する
1. 仮想環境を作る流れ
(1) Anaconda上の仮想環境を確認:
ターミナルにおいて、どちらかのコマンドを入力する。
user@computer$ conda info -e #省略・コマンド
又は
user@computer$ conda info –envs #フル・コマンド
出力例:
# conda environments:
#
base * /Users/PBK-kawat/anaconda3
TensorFlowandKeras /Users/PBK-kawata/anaconda3/envs/TensorFlowandKeras
python37 /Users/PBK-kawat/anaconda3/envs/python37
wxenv /Users/PBK-kawat/anaconda3/envs/wxenv
環境名とディレクトリの場所が出力される。
アスタリスク(*)のある環境が、今いる環境を示す。
(2) ライブラリの確認
方法1:検索して確認(バージョンは分からない)
あるライブラリがその環境にインストールされているかを検索して確認できる。
対話実行モード(REPL)にして、試しにライブラリを読み込んで(importして)確認します。
ターミナルにて、
user@computer$ python
出力例:
(pythonのバージョンやAnacondaのバージョンが出力される)
Type “help”, “copyright”, “credits” or “license” for more information.
>>> #ターミナル(対話実行モード)
>>>import ライブラリ名
出力:
○ライブラリがある場合は、なにも表示されない(ライブラリがインストールされている)
○ライブラリがない場合、
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
ModuleNotFoundError: No module named ‘ライブラリ名’
以下を実行するとライブラリの保存されているファイルの場所が確認できる。
ターミナル(対話実行モード)において、
>>>ライブラリ.__file__
出力(例):
>>> datetime.__file__
‘C:(省略)\Anaconda3\lib\datetime.py’
>>> numpy.__file__
‘C:(省略)\Anaconda3\lib\site-packages\numpy\__init__.py’
方法2:検索して確認(バージョンは分かる)
ライブラリのバージョンまで確認したいときは、以下を実行する。
(インストールされているライブラリなのに、ライブラリがないと出力されることもある。そういうときは方法3で一覧から探してバージョンを確認する)
ターミナルにおいて、
user@computer$ python -m ライブラリ名 –version
出力例:
○ライブラリがある場合、2.0.5 バージョンが出力される
○ライブラリがない場合、No module named ライブラリ名
方法3:一覧から探す(バージョンは分かる)
環境にインストールされているライブラリの一覧を出力する。
ターミナルにおいて、
user@computer$ conda list
または
user@computer$ conda list -n 環境名
-nを–nameにしても実行できる。
環境名を書かないで実行すると、今いる環境にインストールされているライブラリが出力される。
環境名を書いて実行すると、指定した環境にインストールされているライブラリが出力される。
出力(例:自作した環境名py36_Django20)
# packages in environment at C:\Users\Owner\Anaconda3\envs\py36_Django20:
#
certifi 2016.2.28 py36_0
django 2.0.5 py36hd476221_0 anaconda
pip 9.0.1 py36_1
python 3.6.1 2
(以下略)
ライブラリ名、ライブラリのバージョン、対応しているpythonのバージョンが出力される。
(pythonのバージョンの表記法に、python3.6のときpy36と書くことがある。)
(3) 使いたいライブラリと対応するpythonのバージョンを確認
使いたいライブラリのバージョンと対応するpythonのバージョンを確認する。
インターネットに繋がっていないとエラーになる。
ターミナルにおいて、
user@computer$ conda search ライブラリ名
検索したいライブラリ名が一部でも入っているライブラリも出力される。
(例:numpyを検索したとき、numpydocも検索される。)
ターミナルにおいて、
user@computer$ conda search –full-name ライブラリ名
ライブラリ名が完全に一致しているライブラリを出力する。
どちらの方法でもライブラリによってはcondaに対応しているときと、していないときがある。
出力(例):
◎ condaが対応している時、
Fetching package metadata ………..
django 1.7 py27_1 defaults
1.7 py33_1 defaults
1.7 py34_1 defaults
1.7.1 py27_0 defaults
1.7.1 py33_0 defaults
(以下略)
condaが対応しているとき、検索したライブラリの名前(今回はDjango)、ライブラリのバージョン、対応しているpythonのバージョンが出力される。
◎ condaが対応していない時、
Fetching package metadata ………..
condaが対応していない時、検索したことは出力されるが、対応していないため何も出力されない。
condaが対応していなかった場合は、自分でネットからライブラリの対応しているpythonのバージョンを確認する。
2. 仮想環境を作る
それでは実際に仮想環境を作ってみる。
ターミナルにおいて、
user@computer$ conda create -n 環境名 #省略コマンド
或いは、
user@computer$ conda create –name 環境名 #フルコマンド
これで仮想環境を作ることはできるが、pythonはインストールされていない。
普通は作成する環境にpythonをインストールするため、同時にpythonもインストールする。
この場合はターミナルにて、
user@computer$ conda create -n 環境名 python
又は
user@computer$ conda create -n 環境名 python=バージョン
バージョンを指定しない時は、condaに対応している中で最新のバージョンがインストールされる。
使いたいライブラリのバージョンと対応するpythonのバージョンを確認して、対応するpythonのバージョンをインストールする。例えば、
user@computer$ conda create -n py35_pygame19 python=3.5
途中で、このライブラリで作成しますがいいですか?と聞かれるのでOKなときはyを入力してEnterを押す。
始めからライブラリが自分のAnacondaにあるときはダウンロードがされないが、ないときは自動的にダウンロードされる。
仮想環境を作る時のターミナルコマンド例
user@computer$ conda create -n 環境名 python=3.6 numpy=1.12.1
また、Anacondaにインストールされている全部のライブラリを仮想環境にインストールするターミナル・コマンド例、
user@computer$ conda create -n 環境名 anaconda
本当に作成されたか
user@computer$ conda info -eで確認する。
3. 仮想環境の起動
仮想環境を作成するだけでは、その環境を使うことができない。
作った仮想環境を使うために起動する必要がある。
ターミナルにおいて、MacOSのとき
user@computer$ conda activate 環境名
Windowsのとき
C:(省略)>activate 環境名
で起動できる。
◎うまく実行されなかったり、起動したあとでpythonと書いても実行できず、対話実行モード(REPL)にならないときは、一度ターミナルを起動し直すとうまくいくことがある。
仮想環境を起動した後、
user@computer$ conda info -eでアスタリスクの位置が指定の仮想環境に変わっていることを確認すること。
4. 仮想環境の停止
起動した仮想環境を終了する場合は、ターミナルを閉じるか、以下を実行する。
ターミナルにおいて、MacOSの場合、
user@computer$ conda deactivate
Windowsの場合、
C:(省略)>deactivate
5. 仮想環境にライブラリを追加
Anacondaを使う人は、ライブラリをインストールするときに、pipを使う場合とcondaを使う場合があるが、両者を混在させると危険という記事があるのでcondaのみを利用する。
① まず、condaが対応しているかを確認するためにライブラリを検索する。
ターミナルにおいて、
user@computer$ conda search ライブラリ名
ここで、インストールしたいライブラリのバージョンがあれば、以下のコマンドを実行する。
その仮想環境にインストールされているpythonに合わせて、ライブラリをインストールする。
ターミナルにおいて、
user@computer$ conda install ライブラリ名
ライブラリをインストールできたら、
user@computer$ conda listで確認をする。
[/terminl]
②ライブラリのインストールにおいて、condaが対応していない場合、
次の3つの手順があります。
(1)パッケージ名(ライブラリ名)を決定する
(2)インストールしたいパッケージ名(ライブラリ名)のURLを調べる
(3)インストールする
各項目について具体的に例を使って説明する。
(1) パッケージ名(ライブラリ名)を決定する
同じ名前のライブラリでも様々な種類があるので、どれを使うか検索して決定する。
ここではpygameを例にして説明する。
ターミナルにおいて、
[terminal]
user@computer$ anaconda search -t conda pygame
又は、
user@computer$ anaconda search –package-type conda pygame
出力例:
Using Anaconda API: https://api.anaconda.org
Run ‘anaconda show <USER/PACKAGE>’ to get more details:
Packages:
Name | Version | Package Types | Platforms
————————- | —— | ————— | —————
CogSci/pygame | 1.9.2a0 | conda | linux-64, win-32, osx-64, win-64
: Python library based on SDL for making games
Maceo57/pygame | 1.9.2a0 | conda | osx-64
auto/pygamess | 0.3.0 | conda | linux-64
: https://github.com/kzfm/pygamess
(以下略)
使いたいライブラリと対応するpythonのバージョンを確認する。
(2) インストールしたいパッケージ名(ライブラリ名)のURLを調べる
インストールしたいパッケージ名(ライブラリ名)の詳細を見て、インストールに使うURLを調べる。
ターミナルにおいて、
user@computer$ anaconda show パッケージ名(CogSci/pygameなど)
出力例:
Using Anaconda API: https://api.anaconda.org
Name: pygame
Summary: Python library based on SDL for making games
Access: public
Package Types: conda
Versions:
+ 1.9.2a0
To install this package with conda run:
user@computer$ conda install –channel https://conda.anaconda.org/CogSci pygame
出力の最後に書いてあるURLを使います。
(最後1行をそのままコピー貼り付けして使っても良い。)
(3)インストールする
ターミナルにおいて、
user@computer$ conda install -c 調べたURL パッケージ名
具体例をターミナルにおいて示すと、
user@computer$ conda install -c https://conda.anaconda.org/CogSci pygame
又は、
user@computer$ conda install -channel https://conda.anaconda.org/CogSci pygame
このコマンドで、pygameライブラリをインストールできる。
インストール後、
user@computer$ conda list
で確認する。
6. 仮想環境の削除
ターミナルにおいて、
user@computer$ conda remove -n 環境名 –all # 省略コマンド
又は、
user@computer$ conda remove –name 環境名 –all # フル・コマンド
参考文献
2) [備忘] python / conda環境構築の基本コマンド一覧knet