

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
pyenvとvenvの基本を押さえよう
Pythonを使ってプログラムを書くとき、環境を整えることが最初の壁になることがあります。特に複数のプロジェクトを同時に進める場合、Pythonの版の違いと依存ライブラリの衝突を避ける工夫が必要です。ここで登場するのが pyenv と venv です。pyenvはPythonの版(例: 3.9, 3.10, 3.11 など)を切り替えられる道具で、venvはその版の中で動作する「仮想環境」を作る仕組みです。つまり、pyenvが版を決め、venvがその版の中の環境を分ける、という役割分担になります。
この違いを理解しておくと、なぜ同じ PCであっても別のプロジェクトで異なる Python を使えるのかが見えてきます。venvだけでも環境は分離できますが、古いバージョンの Python を使う新しいプロジェクトを立ち上げたい場合には pyenv を使って版を追加しておくと後からの切替が楽です。逆に、システムに入っている Python をいちいち変えたくない場合は、pyenv を使って局所的に設定するのがコツです。
基本的なワークフローとしては、まず pyenv で使う Python の版を用意し(pyenv install 3.11.2 など)、その版をグローバルかローカルに設定します(pyenv global 3.11.2 や pyenv local 3.11.2)。次にその版の下で仮想環境を作成します(python -m venv env など)。この順番を守ると、他のプロジェクトとライブラリが干渉せずに作業を進められます。
具体的な使い分け方のポイントは、以下です。
・新しいプロジェクトを始めるときは最新の安定版を選ぶと良い。
・既存のプロジェクトと互換性がある版を使う場合は過去の版を選ぶ。
・依存関係の管理は requirements.txt や poetry など、ライブラリの固定情報を必ず別ファイルで管理する。これにより再現性が高まります。
総じて、pyenvとvenvの組み合わせは開発の自由度と再現性を高める強力な手段です。版管理と環境分離の両方を担える点が他のツールと比べて大きな利点になります。
どう使い分ける現場の実例とケース別運用
現場では、まず pyenv で使う Python の版を決めてから、各プロジェクトごとに独立した環境を作るのが基本の流れです。例えば新規プロジェクトで Python 3.11 を使いたい場合、pyenv でその版を準備して global もしくは local に設定します。次にプロジェクト内で仮想環境を作り、その中に必要なライブラリをインストールします。これにより、他のプロジェクトの依存関係と衝突することを防げます。
実務での運用ポイントを整理すると次のようになります。
- ローカル開発では pyenv で版を固定し、venv でプロジェクトごとに環境を分ける
- CI 環境では同じバージョンを再現するために .python-version ファイルや poetry.lock を使う
- 依存関係は requirements.txt など固定ファイルで管理する
また、OS によって activate の手順が異なる点にも注意が必要です。macOS/Linux では source env/bin/activate
、Windows では env\Scripts\activate
のようになります。これを覚えておくと、初回のセットアップがスムーズに進みます。
このような実践を積むと、新しいプロジェクトを立ち上げる時の準備時間が短縮され、既存プロジェクトへの影響を気にせず作業を進められるようになります。
以下はその違いをわかりやすく示す表です。
まとめとよくある質問
この記事の要点は、pyenv が版を管理し、venv がその版の中で環境を分離するという点です。実務ではこの組み合わせを使うと、再現性と安定性を両立できます。
よくある質問としては、pyenv と venv を同時に使う順序、バージョン更新の頻度、CI での再現性の確保などがあります。これらはすべて、前述の基本原則に沿って運用することで解決できます。
友達A: ねえ pyenv って結局何がすごいの? B: 簡単に言うと Python の版を管理できることと、venv でその版の中の環境を分離できることかな。例えば新しいプロジェクトで Python3.11を使いたい時、pyenv で3.11を導入して global を切り替えるだけで他のプロジェクトには影響しない。次にその版の下で仮想環境を作れば依存関係の衝突を避けられる。つまり pyenv は版を決める道具、venv は環境を分ける道具。二つを組み合わせると再現性と自由度が同時に手に入るんだ。