pipと仮想環境でPythonパッケージを管理する
このトピックを終えたら
pipでパッケージをインストールし、仮想環境(venv)でプロジェクトごとの環境を分離し、requirements.txtで環境を再現できるようになります。
パッケージが必要な理由
Pythonの基本機能だけでも多くのことができますが、バイオデータ分析でよく必要な機能は他の開発者がすでに作っています:
| やりたいこと | パッケージ | 例え |
|---|---|---|
| 表形式データの処理 | pandas | ExcelのPython版 |
| グラフを描く | matplotlib | 論文Figure生成器 |
| 数学/統計演算 | numpy, scipy | 統計ソフトウェア |
| DNA/タンパク質分析 | biopython | 配列分析ツールキット |
| HTTPリクエスト | requests | NCBI API呼び出し用 |
試薬を毎回自分で合成せずカタログから注文するように、パッケージも自分で作らずpipでインストールします。
pip: パッケージのインストール
pipはPythonのパッケージ管理ツールです。ターミナルで実行します:
# パッケージをインストールpip install pandas
# 特定のバージョンをインストールpip install pandas==2.2.0
# 複数のパッケージを一度にインストールpip install numpy matplotlib scipy
# インストール済みパッケージの一覧を確認pip list
# パッケージを削除pip uninstall pandasGoogle Colabではセルの先頭に!を付けて実行します:!pip install biopython
import: インストールしたパッケージを使う
インストールしたパッケージはimportでコードに読み込みます:
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt
data = np.array([1.2, 3.5, 2.8, 4.1, 3.9])mean_val = np.mean(data)print(f"平均OD値: {mean_val:.2f}")
assert abs(mean_val - 3.1) < 0.01as npはエイリアス(別名)です。numpy.mean()の代わりにnp.mean()と短く書けます。np、pd、pltは世界中の開発者が使う慣例的なエイリアスです。
仮想環境が必要な理由
プロジェクトAではpandas 1.5が必要で、プロジェクトBではpandas 2.2が必要な場合は? 1つのPythonに2つのバージョンを同時にインストールすることはできません。
研究室の例え — 実験ごとに使う試薬セットが違います。Western Blotの試薬とELISAの試薬を同じ棚に置くと混乱します。実験ごとに試薬棚を分ければすっきりします。
仮想環境 = プロジェクトごとの試薬棚
venv: 仮想環境を作る
Python内蔵モジュールvenvを使います:
# 1. 仮想環境を作成(プロジェクトフォルダ内で)python3 -m venv .venv
# 2. 仮想環境を有効化# Mac/Linux:source .venv/bin/activate# Windows:.venv\Scripts\activate
# 3. 有効化を確認 — プロンプトの前に(.venv)が付く(.venv) $ which python# → /プロジェクトパス/.venv/bin/python
# 4. この環境にパッケージをインストールpip install pandas numpy matplotlib
# 5. 無効化(他のプロジェクトに移動する時)deactivate有効化状態でpip installすると、その仮想環境にのみパッケージがインストールされます。他のプロジェクトには影響しません。
requirements.txt: 環境を再現する
「自分のPCでは動くのに同僚のPCでは動かない」— 開発で最もよくある問題です。requirements.txtがこの問題を解決します。
# 現在の環境のパッケージ一覧をファイルに保存pip freeze > requirements.txt生成されたrequirements.txt:
numpy==1.26.4
pandas==2.2.0
matplotlib==3.8.3
scipy==1.12.0同僚がこのファイルを受け取ったら:
# 仮想環境を作って有効化した後pip install -r requirements.txt1行で同一のパッケージ環境が再現されます。実験プロトコルに試薬カタログ番号を記しておくのと同じ原理です。再現性の鍵です。
conda: 科学研究用パッケージ管理ツール
condaはpipに似ていますが、Pythonパッケージだけでなく、CライブラリやRパッケージまで管理できます。バイオインフォマティクスではcondaがより多く使われます:
# conda環境を作成conda create -n bioanalysis python=3.12
# 環境を有効化conda activate bioanalysis
# パッケージをインストール(biocondaチャンネル)conda install -c bioconda biopython samtools
# 環境一覧を確認conda env list
# 環境をエクスポート(再現用)conda env export > environment.yml| pip + venv | conda | |
|---|---|---|
| 対象 | Pythonパッケージのみ | Python + C/R + バイナリツール |
| 環境管理 | 別々(venv) | 統合(conda create) |
| バイオツール | 限定的 | biocondaチャンネルで豊富 |
| 容量 | 軽量 | 重い(Miniconda推奨) |
| 推奨場面 | Web開発、軽い分析 | バイオインフォ、大規模分析 |
最初はpip + venvで始めて、samtoolsやBLASTのようなバイオツールが必要になったらcondaに切り替えましょう。
やってみよう(Faded Example)
空欄を埋めて、仮想環境の作成とパッケージのインストールコマンドを完成させてください。
# 仮想環境を作成python3 -m .venv# 有効化(Mac/Linux).venv/bin/activate# パッケージをインストールpip pandas numpy# 現在の環境を保存pip freeze > .txt
よくあるエラーと解決法
Q: ModuleNotFoundError: No module named 'pandas'が出ます
パッケージがインストールされていないか、別のPython環境にインストールされています。which pythonで現在どのPythonを使っているか確認してください。仮想環境を有効化しているかも確認しましょう。
Q: pip installしたのにimportできません
ターミナルのpipとJupyter NotebookのPythonが異なる環境である可能性があります。Jupyterではセルで!pip install pandasを実行した後、カーネルを再起動してください。
Q: pipとpip3の違いは何ですか?
pipはデフォルトPython用、pip3はPython 3専用です。Python 2と3の両方がインストールされている場合に区別が必要です。仮想環境内ではpipが常にその環境のPythonに接続されるので、区別する必要はありません。
Q: .venvフォルダをGitにアップロードしてもいいですか?
しないでください。.venvには数百MBのパッケージバイナリが含まれています。.gitignoreに.venv/を追加し、requirements.txtだけをGitにアップロードしてください。同僚はrequirements.txtから自分の環境を作ればいいのです。