venvで環境構築する

普段何気なく利用している、venvを利用した環境構築について簡単にまとめてみました。

venvを利用するメリット

そもそも最初期は「なんで直接PCにインストールしたらいけないの?面倒くさくない?」と思っていたので、まずはそのメリットを説明します。

  • 他の環境(PC)でも同じ環境を作成しやすい
    • いわゆる仮想環境系の全般に共通した話
  • 他の環境を壊さずに済む
    • 例えば、Django4系のプロジェクトがあるとする
    • 新規にDjango5系を利用するプロジェクトを作成する必要が出てきた
    • Djangoのバージョンを上げる = Django4系のプロジェクトが破壊されてしまう
    • 仮想環境を利用することで、両方を満たす環境を作成できる

Macでの手順の一例を紹介

私がよく使うコマンドは以下

python3 -m venv venv
source venv/bin/activate

もう少し、それぞれ何をしているのか見てみます。

python3 -m venv venv について

  • python3

    • python3部分は人によってはpythonや特定バージョンを利用したい時にはpython3.12などになる
    • 自身の$PATHが通っているPythonを指定することになる
      • = python3とターミナルで叩いた時に利用されるバージョンを利用する、ということ
  • -mPythonのモジュールをスクリプトとして実行するためのコマンド

  • 後続のvenvモジュールをスクリプトとして実行するという意味になる

  • 最後のvenvは作成する環境の名前

  • 観測範囲だと多いものはvenvなので、自分の場合、普段はvenvとしていることが多い

source venv/bin/activateについて

python3 -m venv venvで作成した仮想環境を有効にする。 これで仮想環境を利用する準備は整ったので、あとは必要に応じてコードを書いたり、pip install djangoなどをしていけば大丈夫です。

一度作った環境を無効化・削除するとき

例えば、最初に実行するpython3でPython3.12の$PATHが通っていて、本来利用したいのはPython3.11など別バージョンだった場合、環境を作り直す必要があります。 そのときは、以下のコマンドを実行します。

deactivate
rm -r venv

別バージョンのPythonを利用する場合

他のバージョンを利用したい時にはpython3.11 -m venv venvのように特定のバージョンを指定します。 最初の例だと、python3としていましたが私の環境ではPython3.12の$PATHが通っており、ちょっとしたコードは最新バージョンで書くことが多いので簡略化した例を紹介していた具合でした。

参考

https://docs.python.org/ja/3/library/venv.html