LoginSignup
23

More than 1 year has passed since last update.

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

Last updated at Posted at 2018-09-29

仮想環境とは

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/bin/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が入りましたね!
これで環境汚染がなくなる!!
バンザイ!!

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
23