仮想環境とは
Pythonでライブラリをインストールするとき、
pip install
コマンドを使いますよね?
このとき、仮想環境を利用していないと、
そのPCのPythonプロジェクト全てから参照できるようになります。
一見便利そうに見えますが、
● プロジェクトAはnumpyのバージョン1.2を使いたい。
● プロジェクトBはnumpyのバージョン1.0を使いたい。
となったときに、死が訪れます。
そうならないように、プロジェクト単位で仮想的に環境を作れるのです。
さあ、やっていきましょう!
※Windowsマシンでボクは作業してますが、Macでもできると思います!
仮想環境の構築
コマンドプロンプトで実行していきます。
仮想環境の準備
Pythonでプロジェクトを作成する前に、仮想環境を用意します。
Python3.2以降は、以下のコマンドが標準で入っており、自由に仮想環境を作ることができます。
以下のコマンドを、仮想環境を保存しておきたいディレクトリで実行します。どこでもいいです。
(ボクは、D:\Python\vtest
で話を進めます。)
python -m venv 好きなフォルダ名
例えば、
python -m venv venv
とかですね!
この記事では、上記のpython -m venv venv
を実行した体で話を進めます。
さて、コマンドを実行すると、venvフォルダがカレントディレクトリに作成されたかと思います。
仮想環境の反映
コマンドプロンプトで、先程作成したvenvフォルダの中に作成されている、
activate.bat
を実行します。
venv\Scripts\activate.bat
※macの場合はsource venv/bin/activate
かな?
うまく反映されると、コマンドプロンプトの前に(venv)
という文字が付きます。
これで準備は完了です!
仮想環境を抜ける
別の仮想環境を使いたかったり、グローバルの環境を使いたい場合は、
現在の仮想環境を抜けなければいけません。
その時は
deactivate
をコマンドプロンプトに入力します。
すると、(venv)
が消え、仮想環境が解除されます。
なにか実験してみる
とりあえずせっかく仮想環境を作ったんで、なにか実験してみましょう。
スクレイピングとかでよく使う、beautiful soup4
でも入れてみますか。
今回使うコード
先に今回利用するコードを書いておきます。
とりあえず、test.py
という名前で保存しておきましょう。
import urllib.request, urllib.error
import bs4
# example.comからHTMLコードを取得
html = urllib.request.urlopen("http://example.com")
# 取得したHTMLのDOMを解析
soup = bs4.BeautifulSoup(html, features='html.parser')
# きれいにフォーマットして出力
print(soup.prettify())
確認
beautiful soup(以下bs4
と表記)はまだ入ってません。
グローバル
python test.py
bs4が入ってないのでエラー
仮想環境
python test.py
bs4が入ってないのでエラー
仮想環境にbs4を入れる
仮想環境がアクティベートされている(コマンドプロンプトの前に(venv)
がついている)ことを確認し、
pip installします
pip install bs4
↓ 実行結果
入ったくさい。
再度test.pyを実行。
python test.py
取れましたね!
さて、グローバルの方ではいかがでしょうか?
deactivate
を実行して、仮想環境から抜けます。
そして再度、python test.py
を叩くと…?
見事にエラー!
仮想環境にだけbs4が入りましたね!
これで環境汚染がなくなる!!
バンザイ!!