Linuxのpython venv(仮想環境)入門|プロジェクトごとにパッケージを分離する方法を初心者向けに解説

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのpython venv(仮想環境)入門|プロジェクトごとにパッケージを分離する方法を初心者向けに解説
「Pythonを使いたいのに、パッケージをインストールしたらほかのプロジェクトに影響しそうで怖い」
そんな不安を感じたことはありませんか?

Linuxでは venv(仮想環境) を使うと、プロジェクトごとに独立したPython環境を作れます。
「このプロジェクトはrequests 2.28、あちらのプロジェクトはrequests 2.31」と、パッケージのバージョンが衝突することなく、きれいに管理できます。

この記事では、venvの仕組みから基本操作まで、初心者でもすぐに動かせる手順を解説します。
Rocky Linux 9 / Ubuntu 24.04 LTS / WSL2で動作確認済みです。

この記事のポイント

・python3 -m venv で仮想環境を作り、source activate で有効化できる
・仮想環境内のpipはシステム全体に影響しない
・deactivateコマンドで仮想環境を抜けられる
・requirements.txt でチームや別サーバーに環境を再現できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜ仮想環境が必要なのか

Linuxに最初からインストールされているPythonは「システムPython」と呼ばれます。
このシステムPythonに直接pipでパッケージを追加していくと、3つの問題が起きます。

バージョン衝突:プロジェクトAが古いバージョンを要求し、プロジェクトBが新しいバージョンを要求する場合、どちらかが動かなくなります
OS破損リスク:LinuxのシステムツールはPythonに依存しているものが多く、誤って上書きするとOSの管理コマンドが壊れることがあります
再現性の欠如:「自分のPCでは動いたのにサーバーでは動かない」という問題が頻発します

venvはこれらをすべて解決します。仮想環境は通常のフォルダとして作られ、削除すれば消えます。システムには一切影響を与えません。

venvの基本操作

1. 仮想環境を作る(python3 -m venv)

まずPython3が使える状態かを確認します。

# Pythonのバージョンを確認する $ python3 --version Python 3.11.7

次に、プロジェクト用のフォルダを作り、その中に仮想環境を作成します。

# プロジェクトフォルダを作る $ mkdir myproject $ cd myproject # 仮想環境「.venv」を作成する(名前は自由だが .venv が一般的) $ python3 -m venv .venv # フォルダの中身を確認する $ ls .venv/ bin include lib lib64 pyvenv.cfg

.venv というフォルダが作られ、中に bin/lib/ ができていれば成功です。

2. 仮想環境を有効化する(source activate)

作った仮想環境を「使える状態」にします。これをアクティベートと言います。

# 仮想環境を有効化する $ source .venv/bin/activate # プロンプトに (.venv) が表示されれば有効化成功 (.venv) $

プロンプトの先頭に (.venv) という表示が出ます。これが「今この仮想環境の中にいる」というサインです。

この状態でpythonやpipを使うと、すべて仮想環境の中で動きます。

# 仮想環境内のpythonの場所を確認する (.venv) $ which python /home/tomohiro/myproject/.venv/bin/python # システムのpythonではなく、仮想環境のpythonが使われている

3. パッケージをインストールする(pip install)

仮想環境が有効な状態でpipを使うと、仮想環境の中だけにインストールされます。

# requestsパッケージを仮想環境内にインストールする (.venv) $ pip install requests Collecting requests Downloading requests-2.31.0-py3-none-any.whl (62 kB) Successfully installed requests-2.31.0 # インストール済みパッケージを確認する (.venv) $ pip list Package Version ---------- ------- certifi 2024.2.2 charset-normalizer 3.3.2 idna 3.6 pip 23.3.1 requests 2.31.0 urllib3 2.2.1

pip list で確認すると、仮想環境内にだけrequestsがインストールされていることがわかります。
システム全体のPython環境には何も変化しません。

4. 仮想環境を無効化する(deactivate)

作業が終わったら、仮想環境から抜けます。

# 仮想環境を無効化する (.venv) $ deactivate # プロンプトから (.venv) が消えれば成功 $

deactivate コマンドを実行するとプロンプトが元に戻り、システムPythonの状態に戻ります。

requirements.txtで環境を再現する

「このプロジェクトに必要なパッケージ一覧」を requirements.txt というファイルに書き出すと、別のサーバーやチームメンバーのPCに全く同じ環境を再現できます。

現在の環境を書き出す

# 仮想環境を有効化した状態でrequirements.txtを作る (.venv) $ pip freeze > requirements.txt # 内容を確認する (.venv) $ cat requirements.txt certifi==2024.2.2 charset-normalizer==3.3.2 idna==3.6 requests==2.31.0 urllib3==2.2.1

別の環境で同じパッケージをインストールする

# 別のサーバーで仮想環境を作って有効化した後 (.venv) $ pip install -r requirements.txt # requirements.txtに書かれた全パッケージが同じバージョンでインストールされる

requirements.txt をGitで管理することで、チーム全員が同じ環境で開発できます。

Ubuntuでvenvが使えない場合の対処

UbuntuやWSL2でvenvを使おうとすると、最初だけエラーが出ることがあります。

# エラーメッセージの例 The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.

このエラーが出た場合は、以下のコマンドでvenvパッケージを追加します。

# Ubuntu / WSL2の場合 $ sudo apt install python3-venv -y # インストール後に再度venvを作成する $ python3 -m venv .venv

Rocky Linuxの場合は通常このエラーは出ません。もしpip自体が入っていない場合は以下で導入します。

# Rocky Linux / RHEL系の場合 $ sudo dnf install python3-pip -y

よくある間違いとトラブルシュート

「activate後もシステムのpythonが使われる」

source を付けずに .venv/bin/activate と実行してしまうのが原因です。
source を付けないとサブシェルで実行されてしまい、現在のシェルには反映されません。

# NG: source なし(効果なし) $ .venv/bin/activate # OK: source をつける $ source .venv/bin/activate

「仮想環境を消したい」

仮想環境は普通のフォルダなので、rmコマンドで削除するだけです。

# まず仮想環境を無効化してから削除する $ deactivate $ rm -rf .venv # システムには何も影響しない

「pip installがPermission deniedになる」

仮想環境を有効化せずにpipを実行しようとしているケースが多いです。
まず source .venv/bin/activate を実行して (.venv) が表示されている状態でpipを使いましょう。

本記事のまとめ

やりたいこと コマンド
仮想環境を作る python3 -m venv .venv
仮想環境を有効化する source .venv/bin/activate
パッケージをインストールする pip install パッケージ名
インストール済みパッケージを確認する pip list
パッケージ一覧をファイルに書き出す pip freeze > requirements.txt
requirements.txtから一括インストールする pip install -r requirements.txt
仮想環境を無効化する deactivate
仮想環境を削除する rm -rf .venv

venvを使いこなすと「環境の汚染」を心配せず、どんどん新しいパッケージを試せるようになります。
.venv フォルダと requirements.txt の2つがプロジェクト管理の基本セットです。ぜひ今日から使ってみてください。
また、本サイト運営者の宮崎は、15年間で3,100名以上にLinuxを教えてきた教育のプロです。無料メルマガでは、ブログには書かない現場のリアルな知見や、セミナー受講生限定のマニュアル情報を配信しています。Linux学習の挫折を防ぎたい方は、ぜひメルマガ登録もご検討ください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>

関連記事:Linuxをもっと深く学ぶ

入門記事で基礎を押さえたら、次は現場で即役立つコマンド・ツールの使い方を深掘りしましょう。

grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も
chmodコマンドで権限を変更する方法|755と644の違いや一括変更も
crontabコマンドの設定と書き方|動かない時のログ確認まで
psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も
findコマンドでファイル・ディレクトリを検索する方法|名前や更新日時で探す
tarコマンドで圧縮・解凍(展開)する方法|必須のzxvfやディレクトリ指定も
LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。