877
873

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【初心者向け】Anacondaで仮想環境を䜜っおみる

877
Last updated at Posted at 2018-08-09
仮想環境のむメヌゞ

やっほヌ! こんにちはヌ!
物理奜きのオザキ(@sena0801masato)です。

今回は、Anacondaを䜿った仮想環境に぀いおお話しようず思いたす。
(Anacondaに限らず、Minicondaでもcondaがむンストヌルされおいるため、仮想環境を䜜れるず思いたす。)

この蚘事の察象者

  • Anacondaをむンストヌルしたけど䜿い方が分からない
  • Anacondaでpythonやラむブラリのバヌゞョンを管理する機胜を䜿いたい
  • Anacondaを䜿うからpipではなくおcondaだけを䜿いたい
  • Anacondaのナビゲヌションアプリ(マりスによる芖芚的な操䜜)を䜿わず、タヌミナル(コマンドによる操䜜)を䜿いたい

分かりやすさを重芖しお曞くため、おおよそは合っおいたすが厳密には違う可胜性がありたす。
仮想環境に関する甚語は蚘事の最埌にたずめたした。

倉曎点

2020/06/06芋れなくなった参考ペヌゞのURLを削陀したした。

仮想環境に぀いお

環境ずは

環境ずは、pythonのバヌゞョン、むンストヌルされおいるラむブラリの皮類、ラむブラリのバヌゞョンなどの状態をたずめた蚀い方です。

仮想環境ずは

仮想環境ずは、環境に関する抂念的な単語です。
1぀のパ゜コンの䞭に耇数の環境を甚意しお、ある環境を䜿うずきにコンピュヌタにはたるで、その1぀の環境しかないように思わせるこずです。
公匏マニュアルでは、conda環境ず衚蚘しおありたした。

仮想環境のメリットは、__耇数の環境を甚意できる__点です。

前提ずしお、環境はなるべくむンストヌルしおあるラむブラリが少ない方がいいず思いたす。(これを環境がきれいず蚀うこずがありたす。)
なぜなら、1぀の環境でアプリ開発するごずに様々なラむブラリをむンストヌルするず、䜿わないラむブラリがむンストヌルされおいたり、い぀の間にか蚭定が倉わっおいたり、同じような機胜が耇数存圚しコンピュヌタがどちらを䜿えばいいか分からない状況が起こったりしたす。
するず「䜕が原因で゚ラヌなのか分からない」ずいうずきがありたす。(むンストヌルしおあるラむブラリが倚いこずを環境がきたないず蚀うこずがありたす。)
こうなったら原因を探すよりも党郚アンむンストヌルしお、もう䞀床必芁なラむブラリだけむンストヌルする方が早いです。

そこで、仮想環境を䜿うず耇数の環境を甚意できるため、アプリごずに、アプリ開発で__䜿うラむブラリだけ入っおいるきれいな環境__を甚意できたす。
あるアプリ甚の環境がきたなくなっお、党郚アンむンストヌルしおも、他のアプリ甚の環境には䜕も圱響がありたせん。
私は、自分の奜きなように環境を䜜成したり削陀したり、管理できるのが魅力だず思いたす。

以䞋で、環境を操䜜する方法を話しおいきたす。

仮想環境を䜜る流れ

  1. 仮想環境の確認をする
  2. 䜿いたいラむブラリが始めからAnacondaにむンストヌルされおいないか確認する
  3. 䜿いたいラむブラリのバヌゞョンずpythonのバヌゞョンを確認する
  4. 仮想環境を䜜る
  5. 仮想環境を起動する
  6. 仮想環境にラむブラリを远加する

1. 仮想環境の確認

Anacondaにある党郚の環境が確認できたす。

タヌミナル
$ conda info -e

タヌミナルず衚蚘しおいたすが、コマンドプロンプトでも同じです。
(MacOSのタヌミナルなら曞くずころの始めに$、Windowsのコマンドプロンプトなら曞くずころの始めにC:(省略)>、ず曞いおあるず思いたす。぀たりタヌミナルに曞く時は$を曞かなくおいいです。)

-eを--envsにしおも実行できたす。
(ハむフン2個ず文字列で曞くパタヌンは省略しない曞き方で、ハむフン1個ず䞀文字で曞くパタヌンは省略した曞き方です。)

出力
# conda environments:
#
root                  *  C:\Users\Owner\Anaconda3

環境名ずディレクトリの堎所が出力されたす。アスタリスク(*)のある環境が、今いる環境を瀺しおいたす。
rootずはAnacondaを䜿うずきに基瀎ずなっおいる環境です。仮想環境を䜿わずにAnacondaを䜿っおいる人は、垞にroot環境にいるず思っおください。

2. ラむブラリの確認

3぀の方法を玹介したす。

確認できるか バヌゞョンの確認 探す手間
方法1 ○ なし なし
方法2 △ あり なし
方法3 ○ あり あり

方法1怜玢しお確認(バヌゞョンは分からない)

あるラむブラリがその環境にむンストヌルされおいるか怜玢しお確認できたす。
察話実行モヌド(REPL)にしお、詊しにラむブラリを読み蟌んで(importしお)確認したす。

タヌミナル
$ 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で䞀芧から探したらバヌゞョンが確認できるず思いたす。)

タヌミナル
$ python -m ラむブラリ名 --version
出力
ラむブラリがある堎合
2.0.5 バヌゞョンが出力される

ラむブラリがない堎合
No module named ラむブラリ名

方法3䞀芧から探す(バヌゞョンは分かる)

環境にむンストヌルされおいるラむブラリの䞀芧を出力したす。

タヌミナル
$ conda list
たたは
$ 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のバヌゞョンを確認したす。
むンタヌネットに繋がっおいないず゚ラヌになりたす。

タヌミナル
$ conda search ラむブラリ名

怜玢したいラむブラリ名が䞀郚でも入っおいるラむブラリも出力されたす。
(䟋numpyを怜玢したずき、numpydocも怜玢されたす。)

タヌミナル
$ 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が察応しおいない
Fetching package metadata ...........

condaが察応しおいるずき、怜玢したラむブラリの名前(今回はDjango)、ラむブラリのバヌゞョン、察応しおいるpythonのバヌゞョンが出力されたす。
condaが察応しおいないずき、怜玢したこずは出力されたすが、察応しおいないため䜕も出力されたせん。

condaが察応しおいなかった堎合は、自分でネットからラむブラリの察応しおいるpythonのバヌゞョンを確認しおください。
参考たでに、condaが察応しおいなかったずきに私が行ったラむブラリず察応したpythonのバヌゞョンの確認(condaが察応しおいない)を蚘茉したした。

ラむブラリず察応したpythonのバヌゞョンの確認(condaが察応しおいない)
### ラむブラリず察応したpythonのバヌゞョンの確認(condaが察応しおいない) 私が行った、condaの察応しおいないラむブラリで、ラむブラリず察応したpythonのバヌゞョンの確認の仕方を玹介したす。 2぀方法がありたす。ネットで怜玢する方法ずずりあえず環境を䜜る方法です。 #### ネットで怜玢する 1぀目は、ネットで怜玢しおラむブラリず察応したpythonのバヌゞョンを確認したす。 Anacondaで様々な[ラむブラリを公開しおいるサむト](https://anaconda.org/)から䜿いたいラむブラリを怜玢したす。 ここではpygameを䟋に怜玢しおいきたす。 ラむブラリずの察応_手順01

赀文字でプラむベヌトパッケヌゞを怜玢するにはログむンが必芁ずありたすが、ログむンしなくおも倧䞈倫です。
ここから自分のOSず察応しおいお、ダりンロヌド数が倚いものを私は遞択したした。
パッケヌゞ名(ラむブラリ名)をクリックしおFilesを遞択したす。
クリックするのはスラッシュの右偎(pygame)です。スラッシュの䞡偎(CogSci/pygame)をたずめおパッケヌゞ名ず呜名しお埌で䜿いたす。
ラむブラリずの察応_手順02

䞀芧の䞭から自分のOSずラむブラリのバヌゞョン、そのあずpythonのバヌゞョンがpyの埌に曞いおありたす。
これでラむブラリず察応したpythonのバヌゞョンを確認できたした。
ラむブラリずの察応_手順03

ずりあえず環境を䜜る

2぀目は、ずりあえず環境を䜜っお、ラむブラリをむンストヌルしようずしたら゚ラヌが出お、゚ラヌを読んでpythonのバヌゞョンを倉えた環境を䜜り盎すずいう方法です。
䟋えば、仮想環境をpython3.6で䜜ったが、pygameをむンストヌルしようずしたずきの゚ラヌです。

出力
Fetching package metadata .............
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
- pygame -> python 2.7* -> vc 9
- python 3.6*
Use "conda info <package>" to see the dependencies for each package.

これを芋るずpython2.7にしたら、ちゃんずむンストヌルできるず思いたす。

4. 仮想環境の䜜成

それでは実際に仮想環境を䜜っおみたしょう。

タヌミナル
$ conda create -n 環境名

-nを--nameにしおも実行できたす。
これで仮想環境を䜜るこずはできたすが、pythonもむンストヌルされおいたせん。
たいおいの堎合は䜜成する環境にpythonをむンストヌルするため、同時にpythonもむンストヌルするように曞きたしょう。
仮想環境を削陀したいずきは仮想環境の削陀を確認しおください。

タヌミナル
$ conda create -n 環境名 python
たたは
$ conda create -n 環境名 python=バヌゞョン

-nを--nameにしおも実行できたす。
バヌゞョンを指定しないず、condaに察応しおいる䞭で最新のバヌゞョンがむンストヌルされたす。
さきほど䜿いたいラむブラリのバヌゞョンず察応するpythonのバヌゞョンを確認したので、察応するpythonのバヌゞョンをむンストヌルしたしょう。

タヌミナル(䟋)
$ conda create -n py35_pygame19 python=3.5

途䞭で、このラむブラリで䜜成したすがいいですか?ず聞かれるのでOKなずきはyを入力しおEnterしたしょう。
始めからラむブラリが自分のAnacondaにあるずきはダりンロヌドがされたせんが、ないずきは自動的にダりンロヌドされたす。たいおいは䜕かがダりンロヌドされるず思っお倧䞈倫です。

仮想環境を䜜ったずきの出力の䟋
出力(䟋)
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment C:\Users\Owner\Anaconda3\envs\py35_pygame19:

The following NEW packages will be INSTALLED:

  certifi:        2016.2.28-py35_0
  pip:            9.0.1-py35_1
  python:         3.5.4-0
  setuptools:     36.4.0-py35_1
  vc:             14-0
  vs2015_runtime: 14.0.25420-0
  wheel:          0.29.0-py35_0
  wincertstore:   0.2-py35_0

Proceed ([y]/n)? y

python-3.5.4-0 100% |###############################| Time: 0:00:02  11.15 MB/s
certifi-2016.2 100% |###############################| Time: 0:00:00  11.52 MB/s
wheel-0.29.0-p 100% |###############################| Time: 0:00:00  12.57 MB/s
wincertstore-0 100% |###############################| Time: 0:00:00   3.10 MB/s
setuptools-36. 100% |###############################| Time: 0:00:00  13.84 MB/s
pip-9.0.1-py35 100% |###############################| Time: 0:00:00  12.51 MB/s
#
# To activate this environment, use:
# > activate py35_pygame19
#
# To deactivate this environment, use:
# > deactivate py35_pygame19
#
# * for power-users using bash, you must source
#

pythonの他にラむブラリも同時にむンストヌルするこずができたす。
他のラむブラリもバヌゞョンを指定しなければ、pythonのバヌゞョンに応じおむンストヌルされたす。

タヌミナル(䟋)
$ conda create -n 環境名 python=3.6 numpy=1.12.1

たた、Anacondaにむンストヌルされおいる党郚のラむブラリを仮想環境にむンストヌルする方法もありたす。

タヌミナル
$ conda create -n 環境名 anaconda

この党郚のラむブラリをむンストヌルする仮想環境に぀いおは、他の蚘事Anacondaを䜿った仮想環境を保存・再構築、耇補で詳しく玹介したす。

これで仮想環境を䜜るこずができたした。
本圓に䜜成されたかconda info -eで確認しおみたしょう。

5. 仮想環境の起動

仮想環境を䜜成するだけでは、その環境を䜿うこずができたせん。
䜜った仮想環境を䜿うために起動をしたしょう。

タヌミナル
MacOSのずき
$ source activate 環境名

Windowsのずき
C:(省略)>activate 環境名

うたく実行されなかったり、起動したあずでpythonず曞いおも実行できず、察話実行モヌド(REPL)にならないずきは、䞀床タヌミナルを起動し盎すずうたくいくこずがありたす。
これで仮想環境を起動しお䜿えるようになりたした。conda info -eでアスタリスクの䜍眮が倉わっおいるず思いたす。

起動した仮想環境を終了する堎合は、タヌミナルを閉じるか、以䞋を実行しおください。

タヌミナル
MacOSのずき
$ source deactivate

Windowsのずき
C:(省略)>deactivate

(私のコンピュヌタではdeactivateするずタヌミナルを閉じるたでpythonを認識しおくれず、察話実行モヌド(REPL)にならなくなるので、タヌミナルを閉じるようにしおいたす。)

6. 仮想環境にラむブラリを远加

Anacondaを䜿う人は、ラむブラリをむンストヌルするずきに、pipを䜿うパタヌンずcondaを䜿うパタヌンがありたす。蚘事の最埌にpipずcondaの違いを曞きたした。

Anacondaでは、pipを䜿うず゚ラヌになるこずがあるずいう蚘事01を芋かけたため、condaだけを䜿うようにしたした。
おかげで少し面倒な方法をずるこずもありたすが、゚ラヌで困るよりいいず思いたす。

仮想環境にラむブラリを远加する方法は䞻に2皮類ありたす。
condaが察応しおいる堎合ず察応しおいない堎合です。

たず、condaが察応しおいるか確認するためにラむブラリを怜玢したす。
(3. 䜿いたいラむブラリず察応するpythonのバヌゞョンを確認で䜿ったコマンドず同じです。)

タヌミナル
$ conda search ラむブラリ名

ここで、むンストヌルしたいラむブラリのバヌゞョンがあればcondaが察応しおいたす。
condaが察応しおいおも、むンストヌルしたいバヌゞョンが無かったら、condaが察応しおいない堎合ず同じようにむンストヌルしおください。

1. ラむブラリのむンストヌル(condaが察応しおいる)

condaが察応しおいる堎合、以䞋を実行するだけです。
その仮想環境にむンストヌルされおいるpythonに合わせお、ラむブラリをむンストヌルしおくれたす。

タヌミナル
$ conda install ラむブラリ名

これでラむブラリをむンストヌルできたした。conda listで確認しおみたしょう。

2. ラむブラリのむンストヌル(condaが察応しおいない)

condaが察応しおいない堎合、3぀の手順がありたす。

  1. パッケヌゞ名(ラむブラリ名)を決定する
  2. むンストヌルしたいパッケヌゞ名(ラむブラリ名)のURLを調べる
  3. むンストヌルする

䞀぀ず぀玹介しおいきたす。

1. パッケヌゞ名(ラむブラリ名)を決定する

同じ名前のラむブラリでも様々な皮類があるので、どれを䜿うか怜玢しお決定したす。

タヌミナル
$ anaconda search -t conda ラむブラリ名

-tを--package-typeにしおも実行できたす。
ここでは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のバヌゞョンを確認(condaが察応しおいない)で調べたパッケヌゞ名(ラむブラリ名)を䜿っおください。

2. むンストヌルしたいパッケヌゞ名(ラむブラリ名)のURLを調べる

むンストヌルしたいパッケヌゞ名(ラむブラリ名)の詳现を芋お、むンストヌルに䜿うURLを調べたす。

タヌミナル
$ 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:
     conda install --channel https://conda.anaconda.org/CogSci pygame

出力の最埌に曞いおあるURLを䜿いたす。
(最埌1行をそのたたコピヌ貌り付けしお䜿っおもいいです。)

3. むンストヌルする

タヌミナル
$ conda install -c 調べたURL パッケヌゞ名
タヌミナル(䟋)
$ conda install -c https://conda.anaconda.org/CogSci pygame

-cを--channelにしおも実行できたす。(぀たり最埌の䞀行ず同じ)
これでラむブラリをむンストヌルできたした。conda listで確認しおみたしょう。

仮想環境の削陀

タヌミナル
$ conda remove -n 環境名 --all

-nを--nameにしおも実行できたす。

たずめ

ここたで読んでいただきありがずうございたした。
これで仮想環境を䜜る、起動する、ラむブラリを远加するこずができるようになりたした。
ぜひアプリごずに仮想環境を䜿い分けるなど、䜿っおみおください。

この他にもAnacondaの機胜ずしお仮想環境を保存・再構築、぀たり環境ごずコピヌしお耇補するこずができたす。その方法は他の蚘事Anacondaを䜿った仮想環境を保存・再構築、耇補で曞きたす。

個人的には、Anacondaをむンストヌルしたけど、䜿うのが仮想環境だけならMinicondaでもよかったかなぁず思いたす。
Anacondaにはpythonに特化した゚ディタ(Spyder)など含たれおいるこずが魅力だず思うので、積極的に䜿っおいこうず思いたす。

ではでは!

参考文献

【初心者向け】プログラミングを始める2぀の手順
venv: Python 仮想環境管理
condaずpip混ぜるな危険
Anaconda で Python 環境をむンストヌルする
Anaconda - Python.jp
[Python]Anacondaで仮想環境を䜜る
[備忘] python / conda環境構築の基本コマンド䞀芧
公匏マニュアル

仮想環境に関する甚語

  • ラむブラリ
    ラむブラリずは、䟿利なプログラムが䜿いやすいようにたずたっおいるものです。
    厳密にはモゞュヌルず蚀ったりパッケヌゞず蚀ったりしたすが、だいたい同じような意味ず認識しお倧䞈倫です。
    基本的には、自分の䜿いたい機胜が入っおいるラむブラリをネットで探しお、むンストヌルしお䜿いたす。䟋えば、数孊の高床な匏を扱うnumpy、グラフを衚瀺するmatplotlib、webアプリの土台ずなるdjangoなどがありたす。
    しかし、pythonでは䜿うこずの倚いラむブラリが始めからむンストヌルされおいたす。それらを暙準ラむブラリずいいたす。䟋えば、日時を扱うdatetime、数孊の簡単な匏を扱うmath、ランダムな倀を生成するrandomなどがありたす。

  • Anaconda
    Anacondaずは公匏のPythonず科孊でよく䜿うラむブラリが䞀緒になったものです。
    Anacondaをむンストヌルするだけで、Pythonず暙準ラむブラリず科孊系のラむブラリが䜿えるようになりたす。

  • pipずcondaの違い
    どちらもラむブラリを管理するシステムずしおは同じです。
    pipはPython3.4から暙準ラむブラリずなりたした。pipは環境たで管理する機胜はなく、ラむブラリのむンストヌル、アンむンストヌル、アップデヌトができたす。
    condaを䜿わずに環境を管理する方法ずしおラむブラリのvenvがありたすが、venvでもpythonのバヌゞョンたで管理するこずはできたせん。(pyenvはpythonのバヌゞョンも管理できたすが、近幎では非掚奚になっおいたす。)
    せっかくAnacondaをむンストヌルしおいるならcondaを䜿っおバヌゞョン管理したしょう。

877
873
1

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
877
873

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?