Linux開発環境の最短セットアップと「apt / pip / venv / npm / Docker」の関係
「pandas が入っているのに import できない」「どの venv で動いているのか分からない」——はじめて VS Code+Jupyter を使う人が踏みがちな落とし穴を、最短で動かす手順と仕組みの見取り図で解消します。読み終わる頃には、「何をどこに入れればよいか/なぜエラーになるか」が説明できる状態になります。
道具の役割を一行で
Docker = OSごと箱 (一番広い)
apt = Linux 用の配布物管理 (Python本体やCライブラリなど)
pip = Python用の配布物管理 (numpy, pandas など)
venv = インストール先を区切る仕切り(プロジェクト単位)
npm = Node.js用の配布物管理(CLIやJSライブラリ)
原則
- OSに近いものは apt、Pythonライブラリは pip、JSは npm。
- pip は venv の中で使う(=プロジェクトごとに依存を分離)。
- Dockerは丸ごと箱。中で apt/pip/npm を使う。
15分で動かす「最短レシピ」
1.1 接続と基本確認
# SSH でサーバへ(略)
# OS 情報
cat /etc/os-release
# 実行ユーザーと権限
whoami
id
パッケージの更新と最低限のツール
# パッケージ一覧を更新
sudo apt update
# (必要に応じて)既存パッケージを最新化
# sudo apt upgrade -y
# ビルドや取得に最低限あると便利
sudo apt install -y build-essential git curl wget
# Python と pip(未導入なら)
sudo apt install -y python3 python3-venv python3-pip
メンテ:不要パッケージの候補確認 → 実行
sudo apt autoremove --dry-run
# 問題なさそうなら
# sudo apt autoremove -y
プロジェクトごとに仮想環境(venv)
# 新規プロジェクト例
mkdir ~/workspace/projectX && cd $_
# 仮想環境を作成
python3 -m venv .venv
# 有効化(fish/zsh/bashで若干異なるが代表例)
source .venv/bin/activate
# pip を最新化+Jupyter から見えるようにする
python -m pip install -U pip setuptools wheel
python -m pip install -U ipykernel
# この venv を Jupyter のカーネル候補へ登録
python -m ipykernel install --user --name projectX --display-name "Python (projectX)"
# よく使うライブラリ
python -m pip install pandas numpy matplotlib
# VS Code を開く
code .
健康診断セル(Notebook 先頭に実行)
import sys
print("Python実行ファイル:", sys.executable) # ← .../projectX/.venv/bin/python が出ればOK
import pandas, numpy, matplotlib
print("pandas:", pandas.__version__)
補足:pip は常に python -m pip ... の形で実行すると、今の Python(=今選んだ venv)に確実に入ります。
仕組みの見取り図(最短理解)
┌────────────── OS (Ubuntu 等) ──────────────┐
│ apt ← Python本体/エディタ/システム系 │
│ │
│ ┌────── Docker コンテナ(任意) ───────┐ │
│ │ ここでも apt/pip/npm を使える │ │
│ └───────────────────────────────────┘ │
│ │
│ ┌─ プロジェクト A ───────────────────┐ │
│ │ .venv/ ← ここに A 用の Python 本体 │
│ │ pip で A 専用のライブラリを入れる │
│ └───────────────────────────────────┘ │
│ ┌─ プロジェクト B ───────────────────┐ │
│ │ .venv/ ← ここに B 用の Python 本体 │
│ │ pip で B 専用のライブラリを入れる │
│ └───────────────────────────────────┘ │
│ │
│ Node.js 系は npm(`-g`は全体, なしはローカル)│
└──────────────────────────────────────────┘
ポイント
- apt は OS にインストールされる「配布物(パッケージ)」を扱う。
- venv は インストール先を分ける“箱”。
- pip はその箱の中に Python ライブラリを入れる。
- Jupyter は「どの箱を使うか(=カーネル)」を選ぶ UI。
- VS Code は「どの Python を使うか(インタプリタ)」と「Notebook のカーネル」を別々に持つ。両方 .venv を指すことが肝。
VS Code+Jupyter の正しい合わせ方
Interpreter(VS Code 左下/コマンドパレット):
…/projectX/.venv/bin/python を選択。
Kernel(Notebook 右上):
「Python (projectX)」を選択(ipykernel install で登録した表示名)。
ずれの検出:Notebookで print(sys.executable)。.venv/bin/python 以外ならずれています。
不要カーネルの整理
jupyter kernelspec list
jupyter kernelspec remove <いらない名前>
典型トラブル → 原因 → 一手で直す
ModuleNotFoundError: No module named 'pandas'
→ Notebook が別の環境を見ている。
対処:Notebook 右上のカーネルを「Python (projectX)」へ。必要なら再登録。
pip で入れたはずが見えない
→ 別の Python に入っている。
対処:python -m pip install ... に統一。python -m pip show pandas で所在確認。
sudo pip を使ってしまった
→ システム領域に混在し事故の元。
対処:sudo を外し、venv 内でやり直す。
apt と pip を同じ場所に混在
→ 競合・破損の温床。
対処:apt はシステム、pip は venv と住み分ける。
npm と CLI(例:Gemini CLI)
npm 基本
npm install <pkg> … プロジェクトローカルに導入
npm install -g <pkg> … システム全体に導入(パスが通り、どこでもコマンドとして使える)
Gemini CLI の導入例
# Node.js / npm(環境に応じて導入。Ubuntuなら簡易には)
sudo apt install -y nodejs npm
# CLI をグローバルに入れる
npm install -g @google/gemini-cli
初回起動・認証フロー
gemini
# 案内に従い、表示されたURLでログイン→コードをコピー→ターミナルに貼り付け
備考:サーバの Node.js バージョン管理が必要なら nvm などの利用も一般的。
ネットワーク(Ubuntu の nmcli 速習)
# デバイス確認(Wi-Fi インタフェース名を特定:例 wlp3s0)
nmcli device
# 見えるSSID一覧
nmcli device wifi list
# 接続
nmcli device wifi connect "SSID名" password "パスワード"
SSH 中にネットワークを切替えると接続ごと落ちることがある。リモート作業時は十分注意(可能ならコンソール接続で実施)。
運用の作法(衝突を防ぐ)
プロジェクトごとに venv(.venv 固定名推奨:ツールが自動検出しやすい)。
試行錯誤は 「共通スターター venv」 で、成果が固まったら各プロジェクトへ再現手順を移す。
依存は requirements.txt や pyproject.toml に固定(再現性)。
迷ったら print(sys.executable) と pip show で所在確認。
Discussion