【Python環境構築 #1】なぜ仮想環境は必須?全ての基本`venv`を使いこなそう

ALL

こんにちは、Tech Samuraiです!
これまでの冒険で、私たちはFlaskでWebアプリを作ったり、OpenCVで画像認識をしたりと、様々な外部ライブラリをpip installで追加してきました。しかし、新しいプロジェクトを始めるたびに、何も考えずにライブラリを追加していくと、いつか必ず恐ろしい問題に直面します。

それは、**「依存関係地獄(Dependency Hell)」**です。

プロジェクトAではライブラリXのバージョン1.0が必要なのに、プロジェクトBではバージョン2.0が必要になる… このような状況は、開発の世界では日常茶飯事です。PC全体で一つの環境を共有していると、プロジェクトを切り替えるたびにライブラリを再インストールする羽目になり、やがては環境が壊れてしまいます。

今回のテーマは、この地獄を回避するための必須スキル、「仮想環境 (Virtual Environment)」です。その中でも、Pythonに標準で備わっている、全ての基本となる**`venv`**の使い方をマスターします!


なぜ仮想環境が必要なのか? – プロジェクトごとに「綺麗な道具箱」を

仮想環境を一言でいうと、**プロジェクトごとに独立したPython環境を「箱」のように作って分離する**仕組みです。

グローバル環境(PC全体の共通環境)に何でもインストールするのは、木工、配管、自動車修理の道具を、一つの巨大な道具箱にごちゃ混ぜに入れるようなものです。いつか必ず、違うサイズのレンチを手に取ってしまいます。

仮想環境を使えば、

  • プロジェクトA用の「Web開発セット(Flaskなど)」
  • プロジェクトB用の「データ分析セット(Pandas, NumPyなど)」
  • プロジェクトC用の「画像認識セット(OpenCVなど)」

といったように、プロジェクトごとに専用の、クリーンな道具箱を用意できます。これにより、ライブラリ同士のバージョン衝突を完全に防ぎ、PC本体のPython環境を汚さずに済むのです。


実践!`venv`の使い方 4ステップ

`venv`はPythonに標準で付属しているので、追加のインストールは不要です。使い方を4つのステップで見ていきましょう。

ステップ1:仮想環境の作成

まず、プロジェクト用のフォルダを作成し、その中に`venv`という名前の仮想環境を作ります。

# プロジェクトフォルダを作成して、そこに移動
mkdir my-app-project
cd my-app-project

# "venv" という名前の仮想環境を作成
python3 -m venv venv

これを実行すると、カレントディレクトリに`venv`というフォルダが作られます。この中に、プロジェクト専用のPython実行環境一式が格納されます。

ステップ2:仮想環境の有効化(アクティベート)

作成した仮想環境に入るには、「アクティベート」というおまじないを唱えます。

# Linux / macOS の場合
source venv/bin/activate

# Windows (コマンドプロンプト) の場合
# venv\Scripts\activate

成功すると、ターミナルのプロンプトの先頭に`(venv)`という目印が付きます。これが、あなたがプロジェクト専用の「部屋」の中にいることの証明です。

ステップ3:パッケージのインストールと依存関係の記録

仮想環境が有効な状態で`pip install`したパッケージは、この`venv`フォルダの中にだけインストールされます。

(venv) $ pip install flask

# インストールしたパッケージとそのバージョンを記録する
(venv) $ pip freeze > requirements.txt

`requirements.txt`は、このプロジェクトで使っているライブラリとそのバージョンの一覧が書かれた「部品リスト」です。このファイルを他人に渡せば、pip install -r requirements.txtというコマンド一つで、誰でもあなたの環境を完全に再現できます。

ステップ4:仮想環境の無効化(デアクティベート)

作業が終わって「部屋」から退出するには、以下のコマンドを実行します。

(venv) $ deactivate

プロンプトから`(venv)`の目印が消え、通常の環境に戻ります。


まとめ

今回は、Pythonで開発を行う上で、もはや常識とも言える「仮想環境」の重要性と、その基本となる`venv`の使い方を探検しました。

  • 仮想環境は、プロジェクト間の**依存関係の衝突**を防ぐために不可欠である。
  • `venv`は、**作成 → アクティベート → インストール → 記録 → デアクティベート**という流れで使う。
  • `requirements.txt`ファイルを使えば、**誰でも同じ開発環境を再現**できる。

`venv`はシンプルで強力ですが、アクティベートを手動で行う必要があったり、Pythonのバージョン自体を管理する機能はなかったりと、少し手間がかかる部分もあります。

次回は、特にデータサイエンスの世界で一世を風靡した、仮想環境と多数のライブラリをまとめて提供するオールインワンパッケージ**「Anaconda」**を取り上げ、そのメリットと、私がなぜ特定のプロジェクトでAnacondaから離れることにしたのか、その実体験をお話しします。お楽しみに!

コメント

タイトルとURLをコピーしました