0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL上でpython環境構築してみた

Last updated at Posted at 2025-05-29

概要

本記事は、WSL(Windows Subsystem for Linux)上で Python 環境を構築し、mamba を用いて仮想環境を作るまでの過程をまとめたものです。

WSL を使ったことがない方からすると、最初は複雑に見えますが、一度理解すればそれほど難しくありません。この記事では、なるべく専門用語を避けて、初心者の方でもわかりやすく説明していきます。

目次

  1. はじめに
  2. 基礎知識編
  3. 実践編:セットアップ手順
  4. まとめ

1. はじめに

Python 環境構築から逃げ続けて、研究室配属時に痛い目を見た経験があります。

「とりあえず Anaconda をインストールしておけば大丈夫でしょ」という人も多いですが、せっかくなので他の選択肢も知っておくと、いつか役に立つかもしれません。

💡 この記事で学べること

  • Python 環境構築の基本概念
  • mamba を使った効率的な環境管理
  • プロジェクトごとに環境を分ける方法

2. 基礎知識編

2.1 ライブラリ、パッケージ、モジュールって何?

まずは基本的な用語から整理しましょう。土地に例えると分かりやすいです。

モジュール = 市町村

  • Python ファイル(.py)一つのこと
  • 例:sample.pyを import して、中の関数を使う
  • 具体例math.py(数学関数が入っている)

パッケージ = 都道府県

  • 複数のモジュールをまとめたフォルダ
  • __init__.pyファイルが入っているのが特徴
  • 具体例requestsパッケージ(HTTP 通信用の複数ファイルをまとめたもの)

ライブラリ = 国

  • 複数のパッケージで構成される大きな機能のまとまり
  • 標準ライブラリ:Python と一緒にインストールされる(print()など)→ 日本
  • 外部ライブラリ:別途インストールが必要(pandasnumpyなど)→ 外国
ライブラリ
├── 標準ライブラリ
│   └── 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 ⭐⭐⭐⭐⭐

速度比較

conda(Python製)    → 🐌 遅い(依存解決に時間がかかる)
mamba(C++製)      → 🚗 速い

使い分け

  • 学習目的:Anaconda(すべて入っているので楽)
  • 実際の開発:Miniforge(軽量で高速)

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以上が必要!」

→ どちらをインストールしても片方が壊れる

解決方法

  1. 自動解決:mamba/conda に任せる
  2. 環境分離:プロジェクトごとに仮想環境を作る

💡 conda/mamba と pip の併用ルール

  1. root で pip を使わない:必ず仮想環境内で
  2. conda/mamba を優先:pip は最後の手段
  3. pip 使用後は環境再作成:依存関係が壊れる可能性
pip freeze > requirements.txt で簡単に依存関係を抽出して requirements.txt に出力できます。
  • こちらは僕が尊敬しているあまつ楓様の動画で紹介されていた考え方です。

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-analysisweb-scraping
  • 用途別:ml-projectdjango-app
  • Python 版別:py311py38

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

環境管理のコマンド

# 環境一覧を表示
mamba env list

# 環境を削除
mamba env remove -n 環境名

# 特定のパッケージをインストール
mamba install -n myenv numpy pandas

# パッケージを検索
mamba search numpy

4. まとめ

環境構築は最初こそ複雑に感じますが、一度理解してしまえば開発効率が大幅に向上します。特に複数のプロジェクトを並行して進める場合、仮想環境の使い分けは必須スキルです。ぜひ実際に手を動かして、自分に合った環境構築方法を見つけてください!

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?