🔰

Pythonの仮想環境について【初心者向けの記事】

に公開

欽ちゃんの仮装大賞って、
今年で100回記念らしいですね。

仮装してみたいという願望はあります。
こんにちは、
ワニかず@40歳 出戻りエンジニアです。

第100回全日本仮装大賞は
2025年1月13日午後7時から3時間特番で
放送されるそうです。

ということで、今回は、
「Pythonの仮想環境」について、
今まで自分が見ないようにしてきた(おい)
「何がどう仮想化されているのか」
などについて、まとめたいと思います。

こういった類の環境構築って
一度やって開発できる状態になると、

「よくわからんけど開発できるからいいや」

な感じになりがちで、
Pythonの仮想環境については
目を逸らしてきました(笑)

転職先ではDjangoで開発を行う
ということなので、
真面目に理解しようと努力した軌跡を残したいと思います。
(自分が忘れるから、だけの説もあり)

この記事は完全に初心者向けの記事になっています。
Pythonでの開発に熟練の方には
全く刺さらない内容ですのでご容赦ください。

また、初心者のまとめですので、
誤りがありましたら是非ご指摘ください。

Pythonの仮想環境 何が仮想化されている?

Pythonで仮想環境を構築すると

  1. Pythonインタープリタ
  2. パッケージ環境
    が仮想化されます。

初心者からすると、
「日本語でOK」
な状態だと思います。

全く理解できないよね。
私このClaude様の回答を見て発狂したので、
もう少しかみ砕いて説明しようと思います。

Pythonインタープリタとは?

私は、
「Pythonインタプリタの実体」
をつかんだ方が理解が進みました。

「Pythonインタプリタ」とは
ただの実行ファイルです。

Windowsの場合、例えば、ここにインストールされる
C:\Users\YourName\AppData\Local\Programs\Python\Python312\python.exe

の「python.exe」(実行ファイル、exeの拡張子のファイル)
が「Pythonインタプリタ」であり、

macOS/Linuxの場合、例えば、ここにインストールされる
/usr/local/bin/python3

の「python3」
が「Pythonインタプリタ」です。

そして、「python.exe」もしくは「python3」が
人間が書いたPythonコードを
コンピュータが理解できる形に変換し、
実行する「通訳者」のような役割

を担う、つまり
「インタプリタ」としての役割を担っているのです。

パッケージ環境とは?

Pythonで使用する外部ライブラリ(追加の機能)と
その設定が保存されている場所のことで、

Pythonの環境を構築すると多用する
pip install ○○
という呪文でインストールすることができます。

Chromeを使っている人は
拡張機能(プラグイン)
みたいなイメージでいいんじゃないでしょうか。

Pythonを仮想環境にすると?

Pythonインタープリタ&パッケージ環境

の様々な組み合わせを
自分のPC内に複数作ることができる

という利点がある、
という理解でいいかなと思います。

Claudeによる詳しいまとめによると

  1. プロジェクト毎の独立性
  • 異なるプロジェクトで異なるバージョンのパッケージやPythonを使用できます
  • 例:プロジェクトAではaが必要だが、プロジェクトBではbが必要、という場合に対応できます
  1. 依存関係の競合を防ぐ
  • パッケージ間の依存関係の競合を防げます
  • システムのPython環境を汚さず、クリーンな状態を保てます
  1. 再現性の確保
  • requirements.txtという便利機能で使用パッケージのバージョンを固定できます
  • 他の開発者と同じ環境を簡単に共有できます
  1. 容易な環境管理
  • 不要になった環境は簡単に削除できます
  • 環境を新しく作り直すのも簡単です

Python仮想環境 具体的なフォルダの例

私の場合、実際のフォルダ構成を
視覚的に認識した方が理解がしやすかったので、
Windowsでの Python環境の構造について示してみます。

システム全体のPython環境(仮想化されていない環境)の例。
C:\
└── Python39\                      # バージョン番号によって異なります
    ├── python.exe                 # Pythonインタープリタ
    ├── Lib\                       # 標準ライブラリ
    │   └── site-packages\         # インストールされたパッケージ
    └── Scripts\                   # 実行ファイル(pip等)
仮想環境(例:myenv という仮想環境を作った際)の例
Copyプロジェクトフォルダ\
└── myenv\                         # 仮想環境フォルダ(名前は任意)
    ├── Scripts\
    │   ├── python.exe            # 仮想環境用のPythonインタープリタ
    │   ├── pip.exe               # 仮想環境用のpip
    │   └── activate              # 仮想環境を有効化するスクリプト
    └── Lib\
        └── site-packages\        # 仮想環境用のパッケージ保存場所

仮想環境を作成すると、
システムのPythonインタープリタがコピーされ、
独立した環境が作られます。

pip installなどのパッケージインストールは:

仮想環境が無効時 → システムのsite-packagesにインストール
仮想環境が有効時 → 仮想環境のsite-packagesにインストール

仮想環境を削除したい場合は、
単純にmyenvフォルダを削除するだけで完了します。

これにより、プロジェクトごとに
独立したPython環境を管理できます。

Python仮想環境の作り方

環境によって微妙に異なりますが、
基本的な部分は一緒です。

Windows

コマンドプロンプト(cmd)または PowerShell で実行
例:

cd C:\Users\YourName\projects\python_project
python -m venv myenv

macOS/Linux

ターミナルで実行
例:

cd /home/username/projects/python_project
python3 -m venv myenv

WSL2(Windows上のLinux)

WSL2のターミナルで実行

例:

cd /mnt/c/Users/YourName/projects/python_project
python3 -m venv myenv

これらによって、
python_projectフォルダの下に、
仮想環境フォルダ「myenv」ができる、というわけです。

python_project/           # プロジェクトのルートディレクトリ
└── myenv/               # 作成された仮想環境フォルダ
    ├── Lib/            # Windows の場合
    ├── lib/            # macOS/Linux の場合
    ├── Scripts/        # Windows の場合
    ├── bin/            # macOS/Linux の場合
    ├── include/
    └── pyvenv.cfg

Python仮想環境を有効にする

前項で記載したように、
python_projectフォルダで、
myenvという仮想環境を構築した場合は、

以下のようなコマンドを実行します。

Windows(コマンドプロンプト/PowerShell)

myenv\Scripts\activate

macOS/Linux(ターミナル)

source myenv/bin/activate

WSL2(Windows上のLinux)

source myenv/bin/activate

で有効になり、有効化後は、
プロンプトの先頭に (myenv)
と表示されていれば、仮想環境が有効になっている証拠です。

なお、有効化後は
どのディレクトリに移動しても

  • ターミナルを閉じるか
  • deactivateコマンドを実行するまで
    その仮想環境のパッケージが使用可能です

まとめ

今回は、Pythonの仮想環境の構築と、
その意味合いについてまとめてみました。

いざ、何かの環境構築をしようとすると、
訳も分からずPythonの仮想環境も同時に作って
ひとまず開発を始める、ということがある方(私)
にとって、今回の記事が何かのお役に立てば幸いです。

最後までご覧いただきありがとうございました!

Discussion