Nixで実践!macOSを汚さずにPython開発環境を構築する手順

2026/05/15

Nix
Python
macOS
開発環境

前回の記事「宣言的パッケージ管理ツール「Nix」の概要と魅力」では、Nixの基本的な仕組みとメリットについて紹介しました。

今回はその実践編として、macOSにNixをインストールし、ローカル環境を一切汚さずに再現性の高いPython開発環境を構築する具体的な手順についてまとめました。


1. macOS上のPython環境でよくある課題

macOSでPythonの環境構築を行う際、以下のようなトラブルに遭遇したことはないでしょうか?

  • OS標準のPythonを直接触ってしまい、システムのライブラリを破損させてしまった。
  • HomebrewでインストールしたPythonが、Homebrew全体のアップデートに伴って意図せずマイナーバージョンアップされ、既存プロジェクトが動かなくなった。
  • バージョン切り替えのために pyenvdirenv、仮想環境管理のための poetryvenv など、多くのツールを組み合わせる必要があり、設定が複雑化してしまった。

Nixを使えば、これらのバージョン管理ツールや仮想環境ツールを個別にインストールすることなく、プロジェクトごとの設定ファイル(shell.nix)を用意するだけで、クリーンで再現性の高い環境を即座に構築できます。

2. macOSへのNixのインストール

まずはmacOSにNix本体をインストールします。macOS(Apple Silicon/Intel)向けには、公式標準のインストーラーのほか、よりモダンで管理がしやすいDeterminate Systems提供のインストーラーを利用するのが現在のトレンドであり、最もおすすめです。

ターミナルを開き、以下のコマンドを実行します。

Nixのインストール(Determinate Systems推奨版)
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

インストーラーを実行すると、セットアップウィザードが進行し、パスワードの入力を求められます。指示に従って進めてください。

インストールが完了したら、一度ターミナルを再起動するか、新しいタブを開いてインストールが成功しているか確認します。

インストールの確認
nix --version

バージョン情報(例: nix (Nix) 2.22.1 など)が出力されれば、インストールは成功です。

3. Nixを使ったPython開発環境の構築

それでは、実際にmacOS環境に影響を与えないプロジェクト専用のPython環境を作っていきます。

3.1. プロジェクトディレクトリの作成

適当な作業用ディレクトリを作成して移動します。

プロジェクト作成
mkdir nix-python-demo
cd nix-python-demo

3.2. shell.nix の作成

ディレクトリの中に、開発環境を定義する shell.nix ファイルを作成します。

今回は Python 3.11 を利用し、ライブラリ追加のための pip や仮想環境 virtualenv を同梱させます。さらに、シェル起動時に自動で仮想環境(.venv)を作成・有効化するスクリプトを記述した、実践的な設定例をご紹介します。

shell.nix
let
  # 安定版のパッケージリポジトリを指定(ピン留め)
  pkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/e35f72cf7b1a11fd9eb0155b93d7c50a58a74e0d.tar.gz") {};
in
pkgs.mkShell {
  # 必要なパッケージをNixで管理
  buildInputs = [
    pkgs.python311
    pkgs.python311Packages.pip
    pkgs.python311Packages.virtualenv
  ];

  # シェル起動時に実行されるスクリプト
  shellHook = ''
    # プロジェクトディレクトリ直下に .venv がない場合は作成
    if [ ! -d ".venv" ]; then
      echo "🔨 仮想環境(.venv)を作成しています..."
      python -m venv .venv
    fi

    # 仮想環境を自動でアクティベート
    source .venv/bin/activate

    # pipを最新化
    pip install --upgrade pip --quiet

    echo "🐍 Python 3.11 開発環境が正常に有効化されました! (.venv)"
    python --version
  '';
}

3.3. 開発環境の起動

ファイルの保存後、ターミナルで以下のコマンドを実行します。

Nixシェルの起動
nix-shell

コマンドを叩くと、初回のみPython 3.11やパッケージのダウンロードが自動で行われ、その後 shellHook で定義したスクリプトが実行されます。

自動的に .venv 仮想環境が生成され、アクティベートされた状態でプロンプトが切り替われば完了です!

実行結果イメージ
🔨 仮想環境(.venv)を作成しています...
🐍 Python 3.11 開発環境が正常に有効化されました! (.venv)
Python 3.11.8
(nix-python-demo) [ユーザー名]@[マシン名] nix-python-demo %

4. ライブラリのインストールと環境のクリーンさ

Nixによって作成されたシェル環境内(nix-shell 内)では、通常通り pip を使ってライブラリをインストールできます。

ライブラリの追加
pip install requests

インストールされた requests ライブラリは、プロジェクトディレクトリ内の .venv 配下にのみ保存されます。

ここで、一度 Nixシェル から抜けてみましょう。

Nixシェルから抜ける
exit

元のシェルに戻った状態で python --versionpip list などを実行してみてください。
先ほどインストールした requests は見当たらず、PythonのバージョンもmacOS標準のもの(または以前からインストールされていたもの)に戻っているはずです。

このように、Nixの環境はローカルのグローバル環境と完全に隔離されており、プロジェクトのディレクトリを削除するだけで、PCを一切汚すことなく完璧に元の状態に片付けることができます。

5. まとめ

Nixを使用すれば、macOS環境で複雑になりがちなPythonのバージョン管理や仮想環境の競合問題を、shell.nix というたった1つのテキストファイルでシンプルに解決できます。

他のメンバーにプロジェクトを共有する際も、「Nixをインストールして nix-shell を叩いてください」と伝えるだけで、OSの違いやインストール済みツールの差を気にすることなく、全員がまったく同じPython環境で開発をスタートできます。

ローカル開発環境をよりクリーンに、より強固に保ちたい方は、ぜひNixでのPython環境構築を試してみてください。


今回はここまでです。

Related Posts

宣言的パッケージ管理ツール「Nix」の概要と魅力

宣言的パッケージ管理ツール「Nix」の概要と魅力