Amazon オーディブル2ヶ月無料キャンペーン中 5/9まで

【Python】venvとdirenvで仮想環境の管理を効率的に!

4 min

こんにちは。ナミレリです。

Pythonを使う上で、プロジェクトごとに異なるバージョンのPythonやライブラリを管理することは一般的な課題です。以前の記事ではPythonのバージョン管理に便利なツールとしてpyenvvenvについてご紹介しました。下の記事です。

今回は、それに続いてvenvdirenvを利用して、ディレクトリに入ったときに自動的にvenv仮想環境がactiveになるような方法を紹介します。

この記事はこんな人にオススメ

  • source .venv/bin/activate を忘れがち
  • deactivate を忘れがち
  • ディレクトリにcdしたら自動的にvenvをactivateしたい
  • ディレクトリから抜けたら自動的にvenvをdeactivateしたい
この記事のMac環境
  • M2 MacBook Air 13.6 インチ
  • M1 Max MacBook Pro 14インチ
  • macOS Ventura 13.4.1(c)
  • Python 3.10.12
  • direnv 2.32.3
Parallels 19 for Macの無料トライアル もありますので、ぜひダウンロードして試してみてください。M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。
NEW Parallels Desktop 19 for Mac

Parallels Desktop 19 for Macは、M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。

14日間の無料トライアルもありますので、ぜひダウンロードして試してみてください。

はじめに

Pythonを使ったプログラミングを進める上で、そのプロジェクトごとに異なるバージョンのPythonやライブラリを管理することは一般的な課題です。

以前の記事ではPythonのバージョン管理に便利なツールとしてpyenvvenvについてご紹介しました。今回は、それに続いてvenvdirenvを利用することで、どのように便利になるのかを紹介します。

venvとは?

venvはPythonに標準で組み込まれているモジュールで、プロジェクトごとに隔離されたPythonの実行環境を作成することができ、プロジェクトごとに必要なPythonのバージョンやライブラリを管理することができます。

venv自体はとても便利なモジュールですが、仮想環境を切り替えることを忘れることが私は良くあります。仮想環境のディレクトリにcdしたら自動でvenvしてくれると便利なんですが、そこで登場するのがdirenvです。

direnvとは?

direnvは、ディレクトリごとに異なる環境変数を設定できるツールです。ディレクトリを移動するだけで、それぞれのプロジェクトで必要な環境を自動的に切り替えることができます。これにより、Pythonのvenv仮想環境を切り替えわすれた!なんてことがなくなるとても便利なツールです。

それでは早速、direnvのインストール方法から基本的な使い方、そしてvenvとの連携方法までを一通り紹介していきます。

Amazonの読み放題・聴き放題

kindle unlimited 読み放題
200万冊以上が読み放題

Audible
12万以上の対象作品が聴き放題

Amazon オーディブル:2ヶ月無料キャンペーン中(5/9まで)→ 詳しくはこちら

direnvのインストール

direnvは様々なOSに対応しています。ここではMacとUbuntuインストール方法を以下に記載します。

MacかUbuntuにインストールする方法

Macにインストール


brew install direnv

Ubuntuにインストール


sudo apt install direnv

direnvのバージョン確認

インストールできたら、念のため以下のコマンドでバージョン確認しておきます。2023年7月14日時点ではバージョン2.32.3です。


direnv version
2.32.3

以下のコマンドでパスを確認しておきます。


which direnv
/opt/homebrew/bin/direnv

direnvをシェルにフックする

まず、direnvをシェルにフックする必要があります。これにより、ディレクトリを移動するたびにdirenvが自動的に実行されるようになります。

zshを使っている場合、以下の行を.zshrcの最終行に追加します。


vi ~/.zshrc
eval "$(direnv hook zsh)"

.zshrcの最終行に追加後、シェルを再起動します。


exec $SHELL -l

自動的にvenv環境を切り替える

それでは今回の主旨である、venv仮想環境にcdすると自動的に仮想環境を切り替えるようにしてみます。まずはvenvで仮想環境を構築します。

venv仮想環境を準備する

今回は、ホームディレクトリにvenv_testというvenv環境を構築します。

venv仮想環境の構築


cd ~
python -m venv venv_test

python -m venv-mはモジュールの意味で、venvモジュールを使いvenv_testというディレクトリ作成しています。

作成したvenv_testに入り中身を確認します。binlibincludeなどが確認できます。

venv仮想環境の確認


cd venv_test
ls -a
bin  include  lib  pyvenv.cfg

venv_testdirenvの設定ファイルである.envrcを作成します。venv仮想環境を有効化にするコマンドである、source ./bin/activateを記載します。

.envrcを準備する


vi .envrc
source ./bin/activate

セキュリティの観点から、direnvは新しく作成した.envrcを自動的には読み込みません。そのため、以下のコマンドを実行して.envrcを許可します。

.envrcを許可する


direnv allow

これにより、venv_testに移動すると自動的にvenvの仮想環境が有効化され、ディレクトリから出ると自動的に無効化されます。

direnvをテストする

venv_testに移動すると自動的にvenvの仮想環境が有効化され、ディレクトリから出ると自動的に無効化されることを、実際にテストして確かめます。

direnvの有効化の確認

venv_testに移動すると自動的にvenvの仮想環境が有効化されることを確認します。

自動有効化の確認


cd
cd venv_test
direnv: loading ~/venv_test/.envrc
direnv: export +VIRTUAL_ENV +VIRTUAL_ENV_PROMPT ~PATH

~/venv_test/.envrcがloadされたことがわかります。

なお、powerlevel10kの場合は、下図のように右プロンプトに仮想環境名が表示されます。

powerlevel10kについては下の記事をご覧ください。

pipのパスを確認しておく


which pip
/Users/user/venv_test/bin/pip

direnvの無効化の確認

venv_testディレクトリから出ると自動的に無効化されることを確認します。

自動無効化の確認


pwd
/Users/user/venv_test
cd
direnv: unloading

direnv: unloadingと表示され、unloadされたことがわかります。

powerlevel10kのプロンプトは、下図のように右プロンプトの仮想環境名は表示されなくなります。

pipのパスを確認しておく


which pip
/Users/user/.pyenv/shims/pip

Amazonの読み放題・聴き放題

kindle unlimited 読み放題
200万冊以上が読み放題

Audible
12万以上の対象作品が聴き放題

Amazon オーディブル:2ヶ月無料キャンペーン中(5/9まで)→ 詳しくはこちら

direnvの主なオプション

direnv helpでヘルプを表示することができますが、主要なオプションを紹介します。

コマンド説明
direnv allow現在のディレクトリの.envrcファイル読み込みを許可する。
direnv deny現在のディレクトリの.envrcファイル読み込みを禁止する。
direnv edit.envrcファイルを編集する。エディタは$EDITOR環境変数で指定する。
direnv reload現在の環境を再読み込みします。.envrcファイルが更新された場合に使用する。
direnv statusdirenvの現在の状態を表示。
direnv versiondirenvのバージョンを表示。

最後に

最後まで読んでいただきありがとうございます。今回の【Python】venvとdirenvで仮想環境の管理を効率的に!はいかがでしたでしょうか。

今回のは、Pythonの開発に役立つツールであるdirenvvenvについて紹介しました。今後もPythonが楽しくなる情報を提供していきますのでお楽しみに!

テックアカデミーで学ぶPythonコース

\無料相談もできます/

テックアカデミーの特徴

現役エンジニアから学べるオンラインに特化したプログラミングスクール。
講師は全員、通過率10%の選考に合格した現役エンジニア
・確かなスキルをもとにマンツーマンサポート。
・900社、30,000名を超える教育実績

Pythonコースの概要

Pythonを学んで機械学習の基礎を習得。
1人では続かない方のためのパーソナルメンターがつく学習プログラム。
機械学習プログラムを開発することがゴール

こんな方にオススメ

・機械学習を学びエンジニアとして活躍したい方
・時間と場所にとらわれない働き方をしたい方
・将来の技術を学びたい学生の方
・機械学習を用いて起業したい方

機械学習の基礎を習得

画像を解析して分類(画像から犬か猫かを分類する)
データから花の種類を分類(データセットから花の種類を分類)
住宅価格の分析と予想(データセットから部屋数と住宅価格を予想)
ビットコインの価格変動を予測(ビットコインの過去のデータから価格変動を予想)

\無料相談もできます/

定番おすすめ記事

M1、M2のMacでPythonの開発環境を構築することや、分野別のライブラリのインストール方法を下記の記事でまとめています。ぜひご覧ください。

関連記事