- 更新日: 2019年04月17日
- 公開日: 2019年04月16日
Pythonの仮想環境まとめ
「さぁ、 Pythonをはじめよう!」
「ええぇっと、まずは pip install ○○ ....」
ちょっと待って下さい、Pythonの仮想環境ってご存知ですか?
慣れない内はチョットめんどうに感じる仮想環境ですが、エラー少なく気持ちよく Python学習、 Pythonプログラミングを楽しむのなら『仮想環境』は必須項目。
今回は、Python初心者向けに情報をまとめてみました。
対象者: Python初心者
Pythonの仮想環境まとめ
仮想環境とは
レンタルサーバーや VirtualBox を利用したことのある方なら仮想環境、なんとなくイメージできると思います。
上図左のように仮想環境なしで Pythonのフレームワークやライブラリを使用した場合、一箇所にどんどんライブラリが追加されていきます。その結果、ライブラリ同士が干渉して上手く機能しない、ということも。特に TensorFlow などのディープラーニングや機械学習向けフレームワーク、ライブラリは複雑で、 1台のパソコンに TensorFlow と Keras(例) 両方使いたいのにダウンロードできない、ということもありました。
このとき非常にモチベーションが下がりますし、問題解決にあてる時間、結構もったいないです。「ライブラリ同士の干渉」や「フレームワークとライブラリの相性の悪さ」といった問題、仮想環境で解決できます。
仮想環境は、1台のパソコンの中に限られた Pythonの実行環境を構築。もちろん仮想環境は 1つでも 2つでもハードディスクの容量が許す限り、いくらでもOK。例えば、Pythonバージョン 3.6の機械学習用の仮想環境や Python2.7 の Django用仮想環境、お好みで Pyhtonのバージョンを選び、使うフレームワーク・ライブラリも選択することが可能。こうした Pythonの実行環境を作成することで、末永く快適に Pyhtonを使うことが可能。
仮想環境を利用しなかった場合
仮想環境のことを知らずにあれこれダウンロードしていたら、Pythonライブラリの数は 179に。もはや管理不能。。。どのプロジェクトにどれだけのライブラリが必要か、まったく分かりません。
逆に仮想環境を構築して利用した場合、以下のようにプロジェクト毎に必要なライブラリがセットされて分かりやすい。管理可能です。
それでは次に Pythonの仮想環境の「種類」についてご紹介したいと思います。
Pythonの仮想環境の種類
Pythonの仮想環境を作成するソフトはいくつかあります。今回は主要な仮想環境 3つをランキング形式でご紹介。
第1位 conda
Python初学者の多くは、 Anaconda というソフトウェアをインストールしているのではないでしょうか? condaは、この Anaconda の中に含まれている仮想環境プログラムで、 Anacondaがインストール済みなら直ぐに使えます。
なぜ conda を薦めるかというと、
- 仮想環境を管理しやすい
- 仮想環境が使いやすい
- Jupyter Notebook用仮想環境も作成可能
- OSに関係なく使い方は一緒
- 関連ライブラリも一緒にダウンロード可能
- Pythonのバージョン指定が簡単に設定できる
- 違う仮想環境に直ぐに変えられる
condaの一番のメリットは、管理しやすいことでしょう。
conda info -e
とすれば今パソコンにある conda の仮想環境リストを確認することが可能。これは他の仮想環境 virtualenv や venv ではできないこと。またここのディレクトリで仮想環境を使いたいと思えば、
conda activate 〇〇
とするだけでOK。本当に使いやすいんですね。あと Windowsの場合ですと、 Python2は最初から入っていません。そのため仮想環境で Python2 を使いたいとすると、別途 Python2 をインストールする必要が出てきます。しかし、 conda は Anaconda と連携しており、 Anaconda内にある Python2 を使って直ぐに Python2 の仮想環境を構築可能。Python2 のサンプルプログラムもノーストレスでテストできますね。
ただし、デメリットもいくつかあり、
- ライブラリの数が pip より少ない
- Anacondaが必要
一番のデメリットは、 Anacondaによるハードディスクの使用領域が大きいことでしょう。Anacondaだけでもインストール直後 約200MBあり、それにどんどんライブラリが加わっていくと、300、400MB とハードディスクの空き領域が減っていきます。ハードディスクに余裕のない方は miniconda をオススメしますが、 jupyter notebook の設定がちょっとややこしいので、結局は Anaconda を勧めますね。
ちなみに conda の仮想環境を使って、Pythonのライブラリをダウンロードする方法は
conda install ○○
現在 conda に登録されているライブラリ等は、約 1,650*。対して Pythonのライブラリ pip は、171,000以上*。登録数は全然違いますが、主要なライブラリは conda にありますので、はじめの内は問題ないと思いますし、 conda 内でも pip install 可能。
第2位 virtualenv
virtualenvは、サードパーティ製の Pythonライブラリ。Pythonには標準搭載されていなく、別途
pip install virtualenv
とする必要があります。
この後登場してくる第3位の venv と非常に似ていますが、仮想環境の構築が virtualenv の方が簡単なのでこちらを上位にしました。
virtualenvで仮想環境を作成する場合は、
virtualenv ○○
であるのに対して、 venvは
python -m venv ○○
とモジュールを指定して仮想環境を作成する必要があります。また venv の場合、仮想環境を始動するとコマンドラインが一旦リセットされます。「ちょっと前のコマンド見たいんですけど」と思っても、見れません。 仮想環境を一旦終了して確認する必要があり、手間です。以上より Python純正装備の仮想環境 venv より virtualenv の方を上位にしました。
第3位 venv
こちらは Python 3.4以降、 pythonに標準搭載された仮想環境のプログラム。 Pythonさえあれば直ぐに使えるという利便性、それから純正プログラムという安心感がいいですね。ただ、仮想環境の作成コマンドは virtualenv の方が直感的。そして機能面はほとんど同じなので、最初に使い始めた方、慣れた方で統一するといいですね。
この他にも pipenv などありますが、まずは上記 3つを使ってみることをオススメします。それでは実際に使っているところの様子をご紹介していきましょう。
Mac、 Windows両方の様子をご紹介できればいいのですが、文量的に限りもありますので、ユーザー数の多そうな Windows版でご紹介させて頂きます。
Pythonの仮想環境を使う/conda編
現状確認
今回ご紹介する作業環境は上記のとおりです。コマンドプロンプトを起動して、コードを打ち込んで確認してみて下さい。
python -V
conda -V
pip -V
仮想環境の作成
condaで仮想環境を作成するには以下のコマンド。
conda create -n ○○
コマンドを実行すると「進めてもいいですか?(Proceed?)」と聞かれますので y を入力、リターンキー。
仮想環境が作成されたら、 activate ○○ すると使えますよ、 deactivate すると終了しますよ、と教えてくれます。
仮想環境の実行
先ほど仮想環境を作成した時にもらったアドバイス通り、コマンドを実行してみます。
activate ○○
するとコマンドディレクトリを示す
C:¥Users¥oshim¥0312¥conda>
が
(○○)C:¥Users¥oshim¥0312¥conda>
に変わりましたね。この (○○) が現在仮想環境〇〇を使用していることを示します。試しに conda list としても現状何もライブラリは存在しません。
condaでライブラリをダウンロード
conda install beautifulsoup4
仮想環境 conda を使って Pythonライブラリをダウンロードするには、上記のように conda install ○○ とします。すると condaが、「こちらの関連パッケージも一緒にダウンロードしますか?」と聞いてきます。
このおすすめ機能、 TensorFlow など高機能型フレームワーク、ライブラリの場合は有り難いですが、今回のような beautifulsoup4 のようにシンプルなライブラリの場合、かえって仮想環境内のライブラリが複雑になるケースも。sqliteなんて最初の内は使わないですよね。参考書を見ながら学習を進めていく内は No でもいいように思います。
ライブラリが問題なくダウンロードできたら下記のように。
さっそく仮想環境のライブラリの環境を確認してみましょう。
conda list
beautifulsoup4 をはじめ関連ライブラリもしっかりダウンロードされていますね。
仮想環境でPythonプログラムを実行。
早速 beautifulsoup を使った Pythonプログラムを実行してみましょう。
import requests, bs4
res = requests.get('https://crowdworks.jp/public/employees/14218')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "html.parser")
contracts = soup.select('span.score.contracts')
for contract in contracts:
out = contract.getText()
print("クラウドワークの実績:" + out)
SampleCode: testCode.py
ライブラリ beautifulsoup を読み込み、プログラム通りの結果を得られましたね。これで conda を使った仮想環境の一連の流れは終了です。
仮想環境を止める時
仮想環境を終了する時は、コマンド画面を消してもいいですし、 deactivate と入力するとコマンド画面を残したまま、仮想環境を終了できます。また仮想環境使用中に、他の仮想環境を使いたい時は
conda activate 〇〇
と仮想環境起動時のコマンドを入れると違う仮想環境にシフトできます。
condaのポータビリティ性を実感
condaで作成した仮想環境は、どのディレクトリでもすぐに仮想環境を実行することができます。例えば上図のようにダウンロード・ディレクトリでも
conda activate ○○
とすれば、自分で作った仮想環境を呼び出し、作成可能。これは virtualenv や venv にはない機能。結構便利ですよ。
ちなみに conda で作成した仮想環境のリストは、
conda info -e
で確認できます。
仮想環境の保存先
conda で作成した仮想環境のプログラムは、上図のように Anaconda もしくは Miniconda 内の envs に保存されていきます。
Python2の仮想環境を作成
Windowsでも conda を使うと、Python2の仮想環境がサクッと作れます。まずは Python2 がパソコンにあるかどうか確認してみましょう。
python2 -V
私の Windowsパソコンには Python2 がないのですが、
conda create -n ○○ python=2.7
とすると Python2 が使える環境ができちゃいます。仮想環境を実行し、
python -V
とすると下記のように Python 2.7 が有効になっていることが確認できます。
Pythonの仮想環境を使う/virtualenv編
virtualenvのダウンロード
まずは自分のパソコンに virtualenv があるかどうか確認しましょう。
pip list
もしくは
pip show virtualenv
virutalenvがまだの場合は
pip install virtualenv
でダウンロードできます。
virtualenvで仮想環境を作成
virtualenv 〇〇
virtualenvで仮想環境を作成する際は、上記のようにコマンド入力。すると今の作業ディレクトリに仮想環境のファイル群がセットされます。
virtualenvで作成した仮想環境は、上図のように作業ディレクトに作成されます。基本的には、作業ディレクトリ毎に仮想環境を作成する必要があります。このあたりが conda に比べるとチョットめんどうですよね。
virtualenvの仮想環境を実行
○○¥Scripts¥activate
Windowsの場合は、上記コマンドで virtualenvが実行され、仮想環境ができます。さっそくライブラリをダウンロードしてみましょう。
pip install beautifulsoup4
インストールが完了され、pip list を確認すると先ほどはなかった beautifulsoup4 がセットされていることが確認できます。
virtualenvの仮想環境を使ってPythonを実行
python testCode.py
SampleCode: testCode.py
Pythonプログラム内の beautifulsoup を読み込み、スクレイピングできていますね。
virtualenvの仮想環境を終了
deactivate
コマンド画面を閉じるか、 deactivate で仮想環境を終了できます。
Pythonの仮想環境を使う/venv編
venvで仮想環境を作成
python -m venv 〇〇
仮想環境プログラム venv は、Python3.4以降であればすぐに使えますので、まずは pythonのバージョンを確認して使いましょう。 venv で仮想環境を作成する方法は、上記のコマンド。実行後は下記のように、作業ディレクトに仮想環境のファイルがセットされます。
venvで仮想環境を実行
〇〇¥Scripts¥activate
venvで仮想環境を実行する場合は、 virtualenvと同じ上記コマンド。実行すると Windowsの場合、コマンド画面が更新されます。
venv起動後のライブラリを確認
pip list
仮想環境作りたては、ライブラリ入っていないことが確認できます。
venvの仮想環境下でライブラリをダウンロード
pip install beautifulsoup4
ライブラリのダウンロード作業は、virtualenvと同じですね。きちんと beautifulsoup が入ったこと確認できます。
venvの仮想環境を使ってPythonプログラムを実行
python testCode.py
SampleCode: testCode.py
問題なく import bs4 を読み込んで Pythonプログラムを実行できていますね。
Jupyter Notebook用の仮想環境を作成
Pythonの実行環境は、コマンド以外に Jupyter Notebook が便利ですよね。しかし、デフォルトの状態で Jupyter Notebook を使っていくと、必要なライブラリを pip install 〇〇 で処理していませんか?普通に pip install 〇〇 をすると、パソコンの Python環境下にライブラリがダウンロードされていきます。できれば仮想環境下で必要に応じたライブラリを管理したいですよね。
Jupyter Notebookでも特定の仮想環境下でプログラムを実行することができます。 Jupyter Notebook用仮想環境は、 virtualenv でも conda でも作成できますが、個人的には conda を勧めます。Jupyter Notebook と conda は、同じ Anaconda に含まれているプログラムですよね。
Jupyter Notebook用仮想環境を作成
conda create -n 〇〇
conda activate ○○
conda install ipykernel
ipython kernel install --user --name= 仮想環境名
deactivate
jupyter notebook
今後、 Jupyter Notebook起動時に画面右上の New ボタンを押すと作成した仮想環境下で Jupyter Notebook を使用することが可能。ライブラリのダウンロードは、再度 conda activate 〇〇 として必要なライブラリを管理する必要があります。
condaとvirtualenvとenvのコマンド表
以下に Windows環境下の各仮想環境のコマンドをまとめます。
作成する仮想環境名: myenv
処理内容 | 種類 | コード |
仮想環境の構築 | conda |
|
virtualenv |
|
|
venv |
|
|
仮想環境の開始 | conda |
|
virtualenv |
|
|
venv |
|
|
ライブラリのインストール | conda |
|
virtualenv |
|
|
venv |
|
|
ライブラリ一覧表示 | conda |
|
virtualenv | or
|
|
venv | or
|
|
ライブラリInfo | conda | なし |
virtualenv |
|
|
venv |
|
|
仮想環境の終了 | conda |
|
virtualenv |
|
|
venv |
|
|
仮想環境の管理 | conda |
|
virtualenv | なし | |
venv | なし | |
Pythonのバージョン指定 | conda | 簡単 |
virtualenv | やや難 | |
venv | やや難 |
Mac版のコマンド
処理内容 | 種類 | コード |
仮想環境の構築 | conda |
|
virtualenv |
|
|
venv |
|
|
仮想環境の開始 | conda |
|
virtualenv |
|
|
venv |
|
|
ライブラリのインストール | conda |
|
virtualenv |
|
|
venv |
|
|
ライブラリ一覧表示 | conda |
|
virtualenv | or
|
|
venv | or
|
|
ライブラリInfo | conda | なし |
virtualenv |
|
|
venv |
|
|
仮想環境の終了 | conda |
|
virtualenv |
|
|
venv |
|
|
仮想環境の管理 | conda |
|
virtualenv | なし | |
venv | なし | |
Pythonのバージョン指定 | conda | 簡単 |
virtualenv | やや難 | |
venv | やや難 |
プロジェクトで必要なライブラリ群の管理
Pythonのプロジェクトで必要なライブラリは、requirements.txt にまとめておくと管理しやすいです。 GitHubで公開されている Pythonプロジェクトの多くは requirements.txt で必要なライブラリを管理していますよね。
requirements.txt の作成は、仮想環境のコマンドを使用するのですが、各仮想環境で作成と読み込み方が違います。参考までに下記にまとめました。
ファイルの... | 種類 | コード |
作成 | conda |
|
virtualenv |
|
|
venv |
|
|
インストール | conda |
|
virtualenv |
|
|
venv |
|
\AIエンジニアに必要なスキルが身に付く/
まとめ
すこし長文になりましたが、仮想環境、奥が深いですね。今回ご紹介した Pythonの仮想環境ですが、Pythonの人気学習本「みんなのPython」や「退屈なことはPythonに・・・」には登場してきません。オライリー本の「入門 Python3」でも最後の方にちょっと紹介されているだけ。
しかし、Pythonを使っていくと分かるのですが、仮想環境の安定感は一度体験すると手放せません。こうした入門書や独学では気づきにくい重要事項、仮想環境以外にもあるかもしれませんね。チョットでもスムーズに学習を進めていこうと思うと、自分一人の力では限界があるのかも。
そんな時は、やはり現役エンジニアからレッスンを受けられる「プログラミングスクール」、価値がありますね。自分では気づかないこと、知リ得ないことを気づかせてくれるかもしれません。
現在プログラミング・スクールというとたくさんありますが、「オンライン型」のスクールなら自分のペースに合わせて学習可能。オンラインの学習環境がまだの方、一度「無料体験レッスン」でどんなものか試してみませんか? CodeCamp では随時無料体験を受け付けていますよ。詳しくは公式ページからご確認下さい。
- この記事を書いた人
- オシママサラ