WSL 上で python 環境構築してみた
概要
本記事は、WSL(Windows Subsystem for Linux)上で Python 環境を構築し、mamba を用いて仮想環境を作るまでの過程をまとめたものです。
「環境構築って難しそう...」と思っているあなたへ
確かに最初は複雑に見えますが、一度理解すればそれほど難しくありません。この記事では、なるべく専門用語を避けて、初心者の方でもわかりやすく説明していきます。
目次
1. はじめに
Python 環境構築から逃げ続けて、研究室配属時に痛い目を見た経験があります 😅
「とりあえず Anaconda をインストールしておけば大丈夫でしょ」という人も多いですが、せっかくなので他の選択肢も知っておくと、いつか役に立つかもしれません。
💡 この記事で学べること
- Python 環境構築の基本概念
- mamba を使った効率的な環境管理
- プロジェクトごとに環境を分ける方法
2. 基礎知識編
2.1 ライブラリ、パッケージ、モジュールって何?
まずは基本的な用語から整理しましょう。料理に例えると分かりやすいです。
モジュール = 一つの食材
- Python ファイル(.py)一つのこと
- 例:
sample.py
を import して、中の関数を使う -
具体例:
math.py
(数学関数が入っている)
パッケージ = 食材セット
- 複数のモジュールをまとめたフォルダ
-
__init__.py
ファイルが入っているのが特徴 -
具体例:
requests
パッケージ(HTTP 通信用の複数ファイルをまとめたもの)
ライブラリ = 料理キット全体
- 複数のパッケージで構成される大きな機能のまとまり
-
標準ライブラリ:Python と一緒にインストールされる(
print()
など) -
外部ライブラリ:別途インストールが必要(
pandas
、numpy
など)
ライブラリ(料理キット)
├── 標準ライブラリ(基本調味料)
│ └── print関数、math関数など
└── 外部ライブラリ(特別な食材)
├── pandasパッケージ(データ分析セット)
├── numpyパッケージ(数値計算セット)
└── matplotlibパッケージ(グラフ作成セット)
2.2 環境構築で出てくる専門用語
Python 環境構築でよく聞く 4 つの重要な概念を理解しましょう。
パッケージ管理ツール
何をするもの? 外部ライブラリのインストール・アンインストール
代表例: pip
具体的な作業: pip install pandas
で pandas をインストール
Python バージョン管理ツール
何をするもの? 複数の Python バージョンを切り替え
代表例: pyenv
なぜ必要? プロジェクトによって Python 3.8 が必要だったり 3.12 が必要だったり
仮想環境管理ツール
何をするもの? プロジェクトごとに独立した環境を作成
代表例: venv
具体例: プロジェクト A では古い pandas、プロジェクト B では新しい pandas を使う
💡 仮想環境って何?
アパートの各部屋のようなものです。それぞれの部屋(環境)は独立していて、部屋 A で何をしても部屋 B には影響しません。
- メリット:プロジェクト間でライブラリのバージョン衝突を防げる
- 具体例:機械学習プロジェクト用環境、Web アプリ用環境を分ける
オールインワンツール
conda = 上記 3 つをすべて管理
- Python 以外(R 言語など)のパッケージも管理可能
- ただし動作が重い
mamba = conda の高速版
- C++で書かれているため依存関係の解決が爆速
- conda と完全互換
Poetry = モダンな管理ツール
- 最近人気が高まっている
- 設定ファイルが分かりやすい
2.3 ディストリビューション(セット商品)
ディストリビューション = 必要なツールをまとめたセット商品
名前 | 特徴 | 含まれるもの | おすすめ度 |
---|---|---|---|
Anaconda | フルセット(重い) | conda + Python + 数百のライブラリ | ⭐⭐⭐ |
Miniconda | 軽量版 | conda + Python のみ | ⭐⭐⭐⭐ |
Miniforge | コミュニティ版 | conda + mamba + Python | ⭐⭐⭐⭐⭐ |
micromamba | 超軽量版 | micromamba のみ | ⭐⭐⭐⭐ |
速度比較
conda(Python製) → 🐌 遅い(依存解決に時間がかかる)
mamba(C++製) → 🚗 速い
micromamba(C++製) → 🚀 超速い(CLI特化)
💡 初心者へのおすすめ
- 学習目的:Anaconda(すべて入っているので楽)
- 実際の開発:Miniforge(軽量で高速)
- 上級者向け:micromamba(最小構成)
2.4 パッケージの入手先(チャンネル)
チャンネル = パッケージを購入するお店
# Anaconda公式ストア(defaults)から購入
conda install numpy
# コミュニティストア(conda-forge)から購入
conda install -c conda-forge numpy
どちらを選ぶべき?
- defaults:Anaconda 社が管理、安定している
- conda-forge:コミュニティが管理、最新版が早い、選択肢が豊富
⚠️ 注意事項
Anaconda = 会社名です。正確には:
- ✅「Anaconda ディストリビューションをインストールした」
- ✅「conda で環境管理している」
- ❌「Anaconda で環境管理している」(会社で管理?)
2.5 依存関係について
用語 | 意味 | 具体例 |
---|---|---|
依存関係 | A が B を必要とする関係 | pandas は numpy が必要 |
依存管理 | 必要なライブラリリストを記録 | requirements.txt に記載 |
依存解決 | リストを見て自動インストール | pip install -r requirements.txt |
間接依存 | 依存先がさらに別のものを依存 | pandas→numpy→BLAS |
よくある依存の衝突
ライブラリA:「numpy 1.20じゃないと動かない!」
ライブラリB:「numpy 1.25以上が必要!」
→ どちらをインストールしても片方が壊れる 😱
解決方法
- 自動解決:mamba/conda に任せる(おすすめ)
- 環境分離:プロジェクトごとに仮想環境を作る(確実)
💡 conda/mamba と pip の併用ルール
- root で pip を使わない:必ず仮想環境内で
- conda/mamba を優先:pip は最後の手段
- pip 使用後は環境再作成:依存関係が壊れる可能性
2.6 開発を楽にするツール
Linter(文法チェッカー)
役割:コードの問題を指摘
例:「この変数、定義されてないよ」「使われてない関数があるよ」
Python 用:flake8、pylint
Formatter(整形ツール)
役割:コードを綺麗に整える
例:インデント統一、余計な空白削除
Python 用:black、autopep8
💡 VSCode との連携
VSCode に Python 拡張機能を入れると、これらのツールが自動で動作します。
コードを保存するたびに自動整形されて便利!
3. 実践編:セットアップ手順
いよいよ実際に Python 環境を構築していきましょう!
3.1 Miniforge のインストール
Miniforge = conda + mamba + Python のセット
# 最新版をダウンロード
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
# インストール実行
bash Miniforge3-$(uname)-$(uname -m).sh
# 設定を反映(重要!)
source ~/.bashrc
💡 インストール中の選択肢
- ライセンス同意:
yes
- インストール場所:デフォルトで OK(Enter キー)
- 初期化:
yes
(重要!これを選ばないとコマンドが使えません)
3.2 Micromamba のインストール
micromamba = 超軽量・高速版
# micromambaをダウンロード
curl -L https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
# 配置場所を作成
mkdir -p ~/micromamba/bin
mv bin/micromamba ~/micromamba/bin/
# コマンドを使えるようにする
echo 'export PATH="$HOME/micromamba/bin:$PATH"' >> ~/.bashrc
# シェル統合(activate/deactivateコマンドが使えるようになる)
echo 'eval "$(micromamba shell hook -s bash)"' >> ~/.bashrc
# 設定を反映
source ~/.bashrc
3.3 仮想環境の作成
mamba を使う場合
# Python 3.11の環境「myenv」を作成
mamba create -n myenv python=3.11 -c conda-forge
# 環境をアクティベート(使用開始)
mamba activate myenv
# 環境から出る
mamba deactivate
micromamba を使う場合
# 同じくPython 3.11環境を作成
micromamba create -n myenv python=3.11 -c conda-forge
# アクティベート
micromamba activate myenv
💡 環境名の付け方のコツ
- プロジェクト名:
data-analysis
、web-scraping
- 用途別:
ml-project
、django-app
- Python 版別:
py311
、py38
3.4 動作確認
# 現在使用中のPythonの場所を確認
which python
# 出力例:/home/username/miniforge3/envs/myenv/bin/python
# Pythonのバージョンを確認
python --version
# 出力例:Python 3.11.x
# インストール済みパッケージ一覧
mamba list
# または
micromamba list
よくあるトラブルと解決法
問題 | 原因 | 解決法 |
---|---|---|
mamba: command not found |
パスが通っていない |
source ~/.bashrc 実行 |
システムの Python が表示される | 環境がアクティベートできていない |
mamba activate myenv 実行 |
古いバージョンが表示される | 別の環境がアクティブ |
mamba deactivate してから再度アクティベート |
3.5 環境の共有・再利用
現在の環境を記録
# 仮想環境に入る
mamba activate myenv
# 環境設定をファイルに出力
mamba env export > environment.yml
environment.yml の中身例
name: myenv
channels:
- conda-forge
dependencies:
- python=3.11
- numpy=1.24.3
- pandas=2.0.2
- matplotlib=3.7.1
環境を再現する
# 新しいマシンで同じ環境を作成
mamba env create -f environment.yml
# 既存環境を更新
mamba env update -n myenv -f environment.yml
💡 実用的な使い方
- チーム開発:environment.yml を Git で共有
- 本番環境デプロイ:開発環境と同じ構成を再現
- 研究の再現性:実験環境を正確に記録
環境管理の便利コマンド
# 環境一覧を表示
mamba env list
# 環境を削除
mamba env remove -n 環境名
# 特定のパッケージをインストール
mamba install -n myenv numpy pandas
# パッケージを検索
mamba search numpy
4. まとめ
今回学んだこと
-
基本概念の理解
- モジュール、パッケージ、ライブラリの違い
- 仮想環境の重要性
- 依存関係の管理
-
ツールの選択肢
- Anaconda vs Miniforge vs micromamba
- 用途に応じた最適な選択
-
実践的なスキル
- 仮想環境の作成・管理
- 環境の共有・再現方法
初心者の方へのアドバイス
🎯 まずはこれから始めよう
- Miniforge をインストール
- プロジェクト用の仮想環境を作成
- 必要なパッケージを mamba でインストール
📚 次のステップ
- Poetry 等の他ツールも試してみる
- Docker 等のコンテナ技術も学習
- CI/CD での環境管理を理解
⚠️ 注意点
- 本番環境では必ず仮想環境を使用
- 環境設定ファイルはバージョン管理で共有
- 定期的に環境をクリーンアップ
参考リンク
最後に
環境構築は最初こそ複雑に感じますが、一度理解してしまえば開発効率が大幅に向上します。特に複数のプロジェクトを並行して進める場合、仮想環境の使い分けは必須スキルです。
ぜひ実際に手を動かして、自分に合った環境構築方法を見つけてください!
何か質問があれば、コメント欄でお気軽にお声かけください 🙂