「Python」で「仮想環境」という言葉を良く耳にするのではないでしょうか。何故、「仮想環境」を使用するのか? 「仮想環境」を使用するとどんなメリットがあるのか? ここでは、「仮想環境」を使用するメリットと、仮想環境の作成方法/使用方法を紹介します。「仮想環境」を使用すると、「Python」の使い方が大きく広がります。
【Python】仮想環境とは、そもそも何?
Pythonの仮想環境はベースとなるPython環境の上に、プロジェクト毎に独立した専用のsite-packages(プロジェクト専用のディレクトリ)を作成して使用する事を指します。そのため、ベース環境のPython標準ライブラリは共有されますが、プロジェクト毎のsite-packagesの部分は独立しており、異なるパッケージや依存関係をプロジェクト毎に持つことが可能な環境の事をいいます。
【Python】仮想環境を使用するメリット
- プロジェクトごとの依存関係の分離
各仮想環境が独自のsite-packagesディレクトリを持つため、複数のプロジェクトが異なるバージョンのライブラリを必要とする場合でも干渉せずに管理できます。
※site-packages:他の環境やシステム全体とは独立したプロジェクト専用のディレクトリ
- システム環境に影響を与えない
仮想環境内にのみパッケージをインストールできるため、システム全体に影響を与えません。 - 簡単な移植性
仮想環境を使用すると、特定の環境構成を維持したままプロジェクトを別の開発者やサーバーに移行できます。同じ環境でプロジェクトが動作するため、移植性が高くなります。 - 異なるPythonバージョンのサポート
各仮想環境は異なるPythonバージョンを使用できるため、特定のPythonバージョンに依存するアプリケーションを並行して開発できます。 - バージョン管理との統合が容易
仮想環境に必要な依存パッケージをrequirements.txtなどで定義すると、他の開発者が同じ依存関係を簡単に再現でき、Gitなどのバージョン管理と統合が容易になります。 - 安全性の向上
仮想環境はシステム全体とは独立しているため、環境ごとに必要なセキュリティパッチや更新を行いやすく、プロジェクトごとにセキュリティ対策が施せます。
【Python】VSCodeによる仮想環境の作成
ベース環境となるPythonのインストール
Python(Cpython)は下記のプログを参考にしてインストールして下さい。
参考ブログ:Python(CPython)のインストール
VSCodeのインストールと日本語化
VSCodeのインストールと日本語化は下記のブログを参照して下さい。
参照ブログ:Visual Studio Code のインストールと日本語化
VSCode上でのPython環境構築
下図の様に、
①「拡張機能」アイコンをクリックし、
②「検索文字入力欄」に、Python と入力する。
③表示された「Python」の「インストール |∨」記号をクリックし、
④「リリスバージョンのインストール」を選択します。
「Python」が「Python Debugger」と共にインストールされます。
使用するベースPythonの選択
- VS Codeのコマンドパレットを開きます。(Ctrl + Shift + P または Cmd + Shift + P)
- 「Python:インタープリターを選択」を選択します。
- ここでは、先程インストールした「Python 3.13.0」を選択します。
- 表示メニューから、ターミナルを開きます。
- 「Python -V」と入力して、インストールした「Python」のバージョンが表示されれば、VSCodeでPython 3.13.0 が使用できます。
今回の実行環境
- OS
- Windows 10 Pro 22H2
- OSビルド:19045.5011
- コードエディタ(IDE)
- Visual Studio Code Ver. 1.94
※仮想環境(v_scraping)を作成して実行しています。
- Visual Studio Code Ver. 1.94
- Python:Ver. 3.13.0
Python 仮想環境の作成と起動方法
仮想環境は、VSCodeのターミナルで、下記のvenvコマンドを使用して作成します。
- 先ず、サンプルとなるプロジェクト「01_scraping_01」をVSCodeで開き、ターミナルを表示します。このプロジェクトはスクレイピングを行うプログラムですが、必要なライブラリ「requests」「beautifulsoup4」が未だインストールされていません。又、仮想環境用のsite-packages(プロジェクト専用のディレクトリ)もありません。
import requests
from bs4 import BeautifulSoup
# スクレイピングする対象のURL(例として仮のニュースサイトのURLを指定します)
url = 'https://www.python.org/downloads/' # 実際のURLを指定する
# 1. RequestsでHTTPリクエストを送信してHTMLを取得
response = requests.get(url)
# ステータスコードを確認(200は成功を意味します)
if response.status_code == 200:
# 2. Beautiful SoupでHTMLを解析
release = []
soup = BeautifulSoup(response.text, 'html.parser')
print()
for li in soup.find_all('li'):
if x := li.find('span', class_='release-number'):
if y := x.find('a'):
if z := li.find('span', class_='release-date'):
release.append((y.text, z.text))
release.sort()
for name, date in release:
print(f'{name:15}{date}')
- コマンドプロンプト
ベース環境の中には、pip しか入っていません。
PS C:\Python_Sample_scraping_01> pip list
Package Version
------- -------
pip 24.2
PS C:\Python_Sample_scraping_01> dir
ディレクトリ: C:\Python_Sample_scraping_01
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/11/02 16:30 873 scraip_01.py
PS C:\Python_Sample_scraping_01>
仮想環境の作成
- 仮想環境は以下のコマンドで作成します。環境名には、プロジェクトに合った名称をつけます。
python -m venv 環境名
- 下記のコマンドで仮想環境を作成します。
python -m venv v_scraping
そうすると、「v_scraping」フォルダが作成され、フォルダには下記の内容が作成されます。
ディレクトリ: C:\Python_Sample_scraping_01
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/11/10 12:42 v_scraping
-a---- 2024/11/02 16:30 873 scraip_01.py
PS C:\Python_Sample_scraping_01> cd v_scraping
PS C:\Python_Sample_scraping_01\v_scraping> dir
ディレクトリ: C:\Python_Sample_scraping_01\v_scraping
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/11/10 12:42 Include
d----- 2024/11/10 12:42 Lib
d----- 2024/11/10 12:43 Scripts
-a---- 2024/11/10 12:42 71 .gitignore
-a---- 2024/11/10 12:42 222 pyvenv.cfg
仮想環境の起動
- 仮想環境は以下のコマンドで起動します。
環境名\Scripts\Activate
- 実際に仮想環境を起動してみます。起動すると、コマンドプロンプトの先頭に(環境名)が表示されます。又、仮想環境の中にも、pip しか入っていません。
PS C:\Python_Sample_scraping_01> v_scraping\Scripts\Activate
(v_scraping) PS C:\Python_Sample_scraping_01> pip list
Package Version
------- -------
pip 24.2
(v_scraping) PS C:\Python_Sample_scraping_01>
- スクレイピングに必要な、Beautiful SoupとRequests ライブラリを仮想環境でインストールします。
(v_scraping) PS C:\Python_Sample_scraping_01> pip install beautifulsoup4
Collecting beautifulsoup4
Downloading beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)
Collecting soupsieve>1.2 (from beautifulsoup4)
Downloading soupsieve-2.6-py3-none-any.whl.metadata (4.6 kB)
Downloading beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)
Downloading soupsieve-2.6-py3-none-any.whl (36 kB)
Installing collected packages: soupsieve, beautifulsoup4
Successfully installed beautifulsoup4-4.12.3 soupsieve-2.6
[notice] A new release of pip is available: 24.2 -> 24.3.1
[notice] To update, run: python.exe -m pip install --upgrade pip
(v_scraping) PS C:\Python_Sample_scraping_01> pip install requests
Collecting requests
Collecting charset-normalizer<4,>=2 (from requests)
Downloading charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl.metadata (34 kB)
Collecting idna<4,>=2.5 (from requests)
Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests)
Downloading urllib3-2.2.3-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests)
Downloading certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB)
Downloading requests-2.32.3-py3-none-any.whl (64 kB)
Downloading certifi-2024.8.30-py3-none-any.whl (167 kB)
Downloading charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl (102 kB)
Downloading idna-3.10-py3-none-any.whl (70 kB)
Downloading urllib3-2.2.3-py3-none-any.whl (126 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2024.8.30 charset-normalizer-3.4.0 idna-3.10 requests-2.32.3 urllib3-2.2.3
[notice] A new release of pip is available: 24.2 -> 24.3.1
[notice] To update, run: python.exe -m pip install --upgrade pip
(v_scraping) PS C:\Python_Sample_scraping_01> pip list
Package Version
------------------ ---------
beautifulsoup4 4.12.3
certifi 2024.8.30
charset-normalizer 3.4.0
idna 3.10
pip 24.2
requests 2.32.3
soupsieve 2.6
urllib3 2.2.3
(v_scraping) PS C:\Python_Sample_scraping_01>
- そうすると、Beautiful SoupとRequests 関連のライブラリがインストールされ、仮想環境で使用可能となります。
仮想環境の停止
- 仮想環境を停止するには、deactivate コマンドを使用します。
deactivate
- 実際に仮想環境を停止してみます。
(v_scraping) PS C:\Python_Sample_scraping_01> deactivate
PS C:\Python_Sample_scraping_01> pip list
Package Version
------- -------
pip 24.2
PS C:\Python_Sample_scraping_01>
- 仮想環境を停止して、インストールしているライブラリを見てみると、ベース環境では pip しかインストールされていません。つまり、仮想環境で構築した環境は独立しており、ベース環境には影響を及ぼさない事が分かります。
更に、仮想環境 v_scraping2を作成してみましょう。
PS C:\Python_Sample_scraping_01> python -m venv v_scraping2
PS C:\Python_Sample_scraping_01> v_scraping2\Scripts\Activate
(v_scraping2) PS C:\Python_Sample_scraping_01> pip list
Package Version
------- -------
pip 24.2
(v_scraping2) PS C:\Python_Sample_scraping_01>
- v_scraping2 でもライブラリは pip しかインストールされていません。この事より、仮想環境「v_scraping」と「v_scraping2」も、それぞれ影響されない「独立した環境」である事が分かります。
VSCodeでの、Python 仮想環境のまとめ
- 各仮想環境が独自のsite-packagesディレクトリを持つため、複数のプロジェクトが異なるバージョンのライブラリを必要とする場合でも、お互いに影響しないで使用できる。
- Pythonのベース環境を作成(インストール)し、VSCodeのパレット(Ctrl + Shift + P または Cmd + Shift + P)で、「Python:インタープリターを選択」を選択し、インストールしたPythonと関連付ける。
- 仮想環境の作成:
「python -m venv 環境名」コマンド - 仮想環境の起動:
「環境名\Scripts\Activate」コマンド - 仮想環境の終了:
「deactivate」コマンド