Pythonの仮想環境まとめ



Pythonの仮想環境まとめ

「さぁ、 Pythonをはじめよう!」
「ええぇっと、まずは pip install ○○ ....」

ちょっと待って下さい、Pythonの仮想環境ってご存知ですか?

慣れない内はチョットめんどうに感じる仮想環境ですが、エラー少なく気持ちよく Python学習、 Pythonプログラミングを楽しむのなら『仮想環境』は必須項目。

今回は、Python初心者向けに情報をまとめてみました。

対象者: Python初心者

目次
  1. Pythonの仮想環境まとめ
  2. 仮想環境とは
  3. 仮想環境を利用しなかった場合
  4. Pythonの仮想環境の種類
  5. Pythonの仮想環境を使う/conda編
  6. Pythonの仮想環境を使う/virtualenv編
  7. Pythonの仮想環境を使う/venv編
  8. Jupyter Notebook用の仮想環境を作成
  9. condaとvirtualenvとenvのコマンド表
  10. プロジェクトで必要なライブラリ群の管理
  11. まとめ

Pythonの仮想環境まとめ

仮想環境とは

image

レンタルサーバーや VirtualBox を利用したことのある方なら仮想環境、なんとなくイメージできると思います。

上図左のように仮想環境なしで Pythonのフレームワークやライブラリを使用した場合、一箇所にどんどんライブラリが追加されていきます。その結果、ライブラリ同士が干渉して上手く機能しない、ということも。特に TensorFlow などのディープラーニングや機械学習向けフレームワーク、ライブラリは複雑で、 1台のパソコンに TensorFlow と Keras(例) 両方使いたいのにダウンロードできない、ということもありました。

このとき非常にモチベーションが下がりますし、問題解決にあてる時間、結構もったいないです。「ライブラリ同士の干渉」や「フレームワークとライブラリの相性の悪さ」といった問題、仮想環境で解決できます。

仮想環境は、1台のパソコンの中に限られた Pythonの実行環境を構築。もちろん仮想環境は 1つでも 2つでもハードディスクの容量が許す限り、いくらでもOK。例えば、Pythonバージョン 3.6の機械学習用の仮想環境や Python2.7 の Django用仮想環境、お好みで Pyhtonのバージョンを選び、使うフレームワーク・ライブラリも選択することが可能。こうした Pythonの実行環境を作成することで、末永く快適に Pyhtonを使うことが可能。

仮想環境を利用しなかった場合

image

仮想環境のことを知らずにあれこれダウンロードしていたら、Pythonライブラリの数は 179に。もはや管理不能。。。どのプロジェクトにどれだけのライブラリが必要か、まったく分かりません。

逆に仮想環境を構築して利用した場合、以下のようにプロジェクト毎に必要なライブラリがセットされて分かりやすい。管理可能です。

image

それでは次に Pythonの仮想環境の「種類」についてご紹介したいと思います。

Pythonの仮想環境の種類

image

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編

現状確認

image

今回ご紹介する作業環境は上記のとおりです。コマンドプロンプトを起動して、コードを打ち込んで確認してみて下さい。

python -V
conda -V
pip -V

仮想環境の作成

image

condaで仮想環境を作成するには以下のコマンド。

conda create -n ○○

コマンドを実行すると「進めてもいいですか?(Proceed?)」と聞かれますので y を入力、リターンキー。

image

仮想環境が作成されたら、 activate ○○ すると使えますよ、 deactivate すると終了しますよ、と教えてくれます。

仮想環境の実行

image

先ほど仮想環境を作成した時にもらったアドバイス通り、コマンドを実行してみます。

activate ○○

するとコマンドディレクトリを示す

C:¥Users¥oshim¥0312¥conda>

(○○)C:¥Users¥oshim¥0312¥conda>

に変わりましたね。この (○○) が現在仮想環境〇〇を使用していることを示します。試しに conda list としても現状何もライブラリは存在しません。

condaでライブラリをダウンロード

image

conda install beautifulsoup4

仮想環境 conda を使って Pythonライブラリをダウンロードするには、上記のように conda install ○○ とします。すると condaが、「こちらの関連パッケージも一緒にダウンロードしますか?」と聞いてきます。

このおすすめ機能、 TensorFlow など高機能型フレームワーク、ライブラリの場合は有り難いですが、今回のような beautifulsoup4 のようにシンプルなライブラリの場合、かえって仮想環境内のライブラリが複雑になるケースも。sqliteなんて最初の内は使わないですよね。参考書を見ながら学習を進めていく内は No でもいいように思います。

ライブラリが問題なくダウンロードできたら下記のように。

image

さっそく仮想環境のライブラリの環境を確認してみましょう。

image

conda list

beautifulsoup4 をはじめ関連ライブラリもしっかりダウンロードされていますね。

仮想環境でPythonプログラムを実行。

image

早速 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 を使った仮想環境の一連の流れは終了です。

仮想環境を止める時

image

仮想環境を終了する時は、コマンド画面を消してもいいですし、 deactivate と入力するとコマンド画面を残したまま、仮想環境を終了できます。また仮想環境使用中に、他の仮想環境を使いたい時は

conda activate 〇〇

と仮想環境起動時のコマンドを入れると違う仮想環境にシフトできます。

condaのポータビリティ性を実感

image

condaで作成した仮想環境は、どのディレクトリでもすぐに仮想環境を実行することができます。例えば上図のようにダウンロード・ディレクトリでも

conda activate ○○

とすれば、自分で作った仮想環境を呼び出し、作成可能。これは virtualenv や venv にはない機能。結構便利ですよ。

ちなみに conda で作成した仮想環境のリストは、

conda info -e

で確認できます。

仮想環境の保存先

image

conda で作成した仮想環境のプログラムは、上図のように Anaconda もしくは Miniconda 内の envs に保存されていきます。

Python2の仮想環境を作成

image

Windowsでも conda を使うと、Python2の仮想環境がサクッと作れます。まずは Python2 がパソコンにあるかどうか確認してみましょう。

python2 -V

私の Windowsパソコンには Python2 がないのですが、

conda create -n ○○ python=2.7

とすると Python2 が使える環境ができちゃいます。仮想環境を実行し、

python -V

とすると下記のように Python 2.7 が有効になっていることが確認できます。

image


Pythonの仮想環境を使う/virtualenv編

virtualenvのダウンロード

image

まずは自分のパソコンに virtualenv があるかどうか確認しましょう。

pip list

もしくは

pip show virtualenv

virutalenvがまだの場合は

pip install virtualenv

でダウンロードできます。

virtualenvで仮想環境を作成

image

virtualenv 〇〇

virtualenvで仮想環境を作成する際は、上記のようにコマンド入力。すると今の作業ディレクトリに仮想環境のファイル群がセットされます。

image

virtualenvで作成した仮想環境は、上図のように作業ディレクトに作成されます。基本的には、作業ディレクトリ毎に仮想環境を作成する必要があります。このあたりが conda に比べるとチョットめんどうですよね。

virtualenvの仮想環境を実行

image

○○¥Scripts¥activate

Windowsの場合は、上記コマンドで virtualenvが実行され、仮想環境ができます。さっそくライブラリをダウンロードしてみましょう。

pip install beautifulsoup4

インストールが完了され、pip list を確認すると先ほどはなかった beautifulsoup4 がセットされていることが確認できます。

image

virtualenvの仮想環境を使ってPythonを実行

image

python testCode.py

SampleCode: testCode.py

Pythonプログラム内の beautifulsoup を読み込み、スクレイピングできていますね。

virtualenvの仮想環境を終了

image

deactivate

コマンド画面を閉じるか、 deactivate で仮想環境を終了できます。


Pythonの仮想環境を使う/venv編

venvで仮想環境を作成

image

python -m venv 〇〇

仮想環境プログラム venv は、Python3.4以降であればすぐに使えますので、まずは pythonのバージョンを確認して使いましょう。 venv で仮想環境を作成する方法は、上記のコマンド。実行後は下記のように、作業ディレクトに仮想環境のファイルがセットされます。

image

venvで仮想環境を実行

image

〇〇¥Scripts¥activate

venvで仮想環境を実行する場合は、 virtualenvと同じ上記コマンド。実行すると Windowsの場合、コマンド画面が更新されます。

venv起動後のライブラリを確認

image

pip list

仮想環境作りたては、ライブラリ入っていないことが確認できます。

venvの仮想環境下でライブラリをダウンロード

image

pip install beautifulsoup4

ライブラリのダウンロード作業は、virtualenvと同じですね。きちんと beautifulsoup が入ったこと確認できます。

image

venvの仮想環境を使ってPythonプログラムを実行

image

python testCode.py

SampleCode: testCode.py

問題なく import bs4 を読み込んで Pythonプログラムを実行できていますね。

Jupyter Notebook用の仮想環境を作成

image

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
conda create -n myenv
virtualenv
virutalenv myenv
venv
python -m venv myenv
仮想環境の開始 conda
conda activate myenv
virtualenv
myenv\Scripts\activate
venv
myenv\Scripts\activate
ライブラリのインストール conda
conda install ○○
virtualenv
pip install ○○
venv
pip install ○○
ライブラリ一覧表示 conda
conda list
virtualenv
pip list
or
pip freeze
venv
pip list
or
pip freeze
ライブラリInfo conda なし
virtualenv
pip show 〇〇
venv
pip show 〇〇
仮想環境の終了 conda
deactivate
virtualenv
deactivate
venv
deactivate
仮想環境の管理 conda
conda info -e
virtualenv なし
venv なし
Pythonのバージョン指定 conda 簡単
virtualenv やや難
venv やや難
Mac版のコマンド
処理内容 種類 コード
仮想環境の構築 conda
conda create -n myenv
virtualenv
virtualenv myenv
venv
python -m venv myenv
仮想環境の開始 conda
source activate myenv
virtualenv
source myenv/bin/activate
venv
source myenv/bin/activate
ライブラリのインストール conda
conda install ○○
virtualenv
pip install ○○
venv
pip install ○○
ライブラリ一覧表示 conda
conda list
virtualenv
pip list
or
pip freeze
venv
pip list
or
pip freeze
ライブラリInfo conda なし
virtualenv
pip show 〇〇
venv
pip show 〇〇
仮想環境の終了 conda
source deactivate
virtualenv
deactivate
venv
deactivate
仮想環境の管理 conda
conda info -e
virtualenv なし
venv なし
Pythonのバージョン指定 conda 簡単
virtualenv やや難
venv やや難

プロジェクトで必要なライブラリ群の管理

Pythonのプロジェクトで必要なライブラリは、requirements.txt にまとめておくと管理しやすいです。 GitHubで公開されている Pythonプロジェクトの多くは requirements.txt で必要なライブラリを管理していますよね。

requirements.txt の作成は、仮想環境のコマンドを使用するのですが、各仮想環境で作成と読み込み方が違います。参考までに下記にまとめました。

ファイルの... 種類 コード
作成 conda
conda list --export > requirements.txt
virtualenv
pip freeze > requirements.txt
venv
pip freeze > requirements.txt
インストール conda
conda install --yes --file requirements.txt
virtualenv
pip install -r requirements.txt
venv
pip install -r requirements.txt


まとめ

すこし長文になりましたが、仮想環境、奥が深いですね。今回ご紹介した Pythonの仮想環境ですが、Pythonの人気学習本「みんなのPython」や「退屈なことはPythonに・・・」には登場してきません。オライリー本の「入門 Python3」でも最後の方にちょっと紹介されているだけ。

しかし、Pythonを使っていくと分かるのですが、仮想環境の安定感は一度体験すると手放せません。こうした入門書や独学では気づきにくい重要事項、仮想環境以外にもあるかもしれませんね。チョットでもスムーズに学習を進めていこうと思うと、自分一人の力では限界があるのかも。

そんな時は、やはり現役エンジニアからレッスンを受けられる「プログラミングスクール」、価値がありますね。自分では気づかないこと、知リ得ないことを気づかせてくれるかもしれません。

現在プログラミング・スクールというとたくさんありますが、「オンライン型」のスクールなら自分のペースに合わせて学習可能。オンラインの学習環境がまだの方、一度「無料体験レッスン」でどんなものか試してみませんか? CodeCamp では随時無料体験を受け付けていますよ。詳しくは公式ページからご確認下さい。

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp