そんな不安を感じたことはありませんか?
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 でチームや別サーバーに環境を再現できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜ仮想環境が必要なのか
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.
# Ubuntu / WSL2の場合 $ sudo apt install python3-venv -y # インストール後に再度venvを作成する $ python3 -m venv .venv
# 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サーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>
関連記事:Linuxをもっと深く学ぶ
入門記事で基礎を押さえたら、次は現場で即役立つコマンド・ツールの使い方を深掘りしましょう。・grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も
・chmodコマンドで権限を変更する方法|755と644の違いや一括変更も
・crontabコマンドの設定と書き方|動かない時のログ確認まで
・psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も
・findコマンドでファイル・ディレクトリを検索する方法|名前や更新日時で探す
・tarコマンドで圧縮・解凍(展開)する方法|必須のzxvfやディレクトリ指定も
・LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:VPSでLinuxサーバーを初期セットアップする入門|ConoHaとさくらでroot設定からファイアウォールまで
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます