Edited at

ちょっとまって!Python3を使う前のバーチャル環境「venv」の設定


仮想環境とは

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フォルダがカレントディレクトリに作成されたかと思います。

image.png


仮想環境の反映

コマンドプロンプトで、先程作成したvenvフォルダの中に作成されている、

activate.batを実行します。

venv\Scripts\activate.bat

※macの場合はsource venv/Script/activateかな?

うまく反映されると、コマンドプロンプトの前に(venv)という文字が付きます。

image.png

これで準備は完了です!


仮想環境を抜ける

別の仮想環境を使いたかったり、グローバルの環境を使いたい場合は、

現在の仮想環境を抜けなければいけません。

その時は

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

image.png

bs4が入ってないのでエラー

仮想環境

python test.py

image.png

bs4が入ってないのでエラー


仮想環境にbs4を入れる

仮想環境がアクティベートされている(コマンドプロンプトの前に(venv)がついている)ことを確認し、

pip installします

pip install bs4

↓ 実行結果

image.png

入ったくさい。

再度test.pyを実行。

python test.py

image.png

取れましたね!

さて、グローバルの方ではいかがでしょうか?

deactivateを実行して、仮想環境から抜けます。

そして再度、python test.pyを叩くと…?

image.png

見事にエラー!

仮想環境にだけbs4が入りましたね!

これで環境汚染がなくなる!!

バンザイ!!