AI コードは今日動いても明日崩れる?5 分で仮想環境を整える#
あなたはこの問題に直面したことがあるはず#
昨日、あなたは ChatGPT にデータ分析スクリプトを書かせ、うまく動いていました。
今日は AI にクローラーのプロジェクトを書かせ、新しいバージョンの pandas をインストールしました。
結果、昨日のデータ分析スクリプトが突然エラーを報告しました:
AttributeError: 'DataFrame' object has no attribute 'append'
あなたは困惑しました:何も変更していないのに、どうして動かなくなったの?
問題はここにあります:新しいプロジェクトは pandas 2.0 を必要とし、あなたはpip installでシステムの pandas をアップグレードしました。
しかし、古いプロジェクトは pandas 1.5 に基づいて書かれており、pandas 2.0 では.append()メソッドが削除されました。
システムには一つのバージョンしかインストールできず、新しいプロジェクトは動くようになったが、古いプロジェクトは崩れました。
この記事ではあなたに教えます:
- なぜこのような「押したら浮く」問題が発生するのか
- プロの開発者がどのように解決するか(仮想環境)
- 5 分で uv ツールを使って仮想環境を管理する方法
- 初心者が最も陥りやすい 3 つの罠
読書時間:8 分
実践時間:5 分
前提:あなたはすでに Python をインストールし、簡単なコードを実行できること
第 1 章:なぜあなたのプロジェクトは互いに「喧嘩」するのか?#
問題の本質#
あなたのコンピュータにはシステム Python 環境があり、すべてのpip installでインストールしたライブラリはここに置かれています。
C:\Python\Lib\site-packages\
├─ pandas (一つのバージョンしかインストールできない!)
├─ numpy
└─ requests
複数のプロジェクトを行うと、問題が発生します:
シナリオ 1:
- プロジェクト A(3 ヶ月前に書いたデータ分析):pandas 1.5 が必要
- プロジェクト B(今日書いたクローラー):pandas 2.0 が必要
あなたは pandas 2.0 をインストールしましたが、システムの 1.5 は上書きされました。
シナリオ 2:
- プロジェクト C:AI チャットボット、openai ライブラリを使用
- プロジェクト D:画像処理、pillow、opencv を使用
3 ヶ月後、あなたはプロジェクト C を再実行したいが、当時インストールしたライブラリを忘れてしまいました。
システム環境には 50 個のライブラリがあり、どれがプロジェクト C に必要か分かりません。
シナリオ 3:
あなたはコードを同僚に送信し、彼は「どのライブラリをインストールする必要がありますか?」と尋ねます。
あなたは「ええと...pandas、numpy、requests... 他には何だっけ?」と答えます。
同僚はあなたの言った通りにインストールしましたが、バージョンが合わず、コードはまだエラーを報告します。
問題の根源#
システム環境 = 公共のクローゼット
すべての人(すべてのプロジェクト)が一つのクローゼットを共有しています:
- 兄はスニーカーを置きたい、妹はハイヒールを置きたい
- 父の革靴と母のスリッパが混ざっています
- 時間が経つにつれて、誰も物を削除できなくなります(他の人に影響を与えるのが怖いから)
これが、あなたのプロジェクトが互いに喧嘩する理由です。
第 2 章:仮想環境 - 各プロジェクトに独立した部屋を与える#
プロの開発者のやり方#
すべてのプロジェクトがシステム環境を共有しないようにし、各プロジェクトに独立した仮想環境を作成します。
仮想環境 = 独立した部屋
各プロジェクトには自分の部屋(.venvフォルダ)があり:
- プロジェクト A は自分の部屋に pandas 1.5 をインストール
- プロジェクト B は自分の部屋に pandas 2.0 をインストール
- 二つの部屋は干渉せず、それぞれのことを行います
一枚の図で理解する#
あなたのコンピュータ
│
├─ システムPython環境 (公共のリビングルーム、できるだけ空けておく)
│ └─ Python本体とuvツールだけをインストール
│
└─ あなたのプロジェクトフォルダ
│
├─ プロジェクトA:データ分析
│ ├─ analysis.py (あなたのコード)
│ └─ .venv (プロジェクトAの独立した部屋)
│ └─ pandas 1.5
│
└─ プロジェクトB:クローラー
├─ scraper.py
└─ .venv (プロジェクトBの独立した部屋)
└─ pandas 2.0 ← プロジェクトAとは衝突しない!
核心的価値#
1. バージョンの隔離
- プロジェクト A は pandas 1.5 を使用し、プロジェクト B は 2.0 を使用し、互いに影響しない
2. 依存関係の明確化
- 各プロジェクトの
.venvにはそのプロジェクトに必要なライブラリだけがインストールされる - 3 ヶ月後に再実行する際、依存関係が一目瞭然
3. 再現性
requirements.txtをエクスポートし、他の人が一発であなたの環境を再構築できる- 「どのライブラリをインストールしたの?」と聞く必要がなくなる
4. クリーンで削除可能
- プロジェクトフォルダを削除すると、
.venvも一緒に削除される - システム環境は常にクリーン
類似の理解#
仮想環境を使わない場合:
家族全員が一つのクローゼットを共有する(システム環境)
├─ 父の服
├─ 母の服
├─ 兄の服
└─ 妹の服 ← 全て混ざっていて、誰も削除できない
仮想環境を使う場合:
各自が自分のクローゼットを持つ(仮想環境)
├─ 父の部屋/.venv → 父の服を置く
├─ 母の部屋/.venv → 母の服を置く
├─ 兄の部屋/.venv → 兄の服を置く
└─ 妹の部屋/.venv → 妹の服を置く
↑ 互いに干渉しない!
第 3 章:実践 - 5 分で uv を使って仮想環境を管理する#
仮想環境の概念は理解したので、使い方を学びましょう。
従来のツールはpip + venvですが、私は直接uvを使うことをお勧めします:より速く、より簡単で、ワンストップです。
ステップ 1:uv ツールをインストールする(1 分)#
Windows ユーザー:
PowerShell を開き、次のコマンドを実行します:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Mac/Linux ユーザー:
ターミナルを開き、次のコマンドを実行します:
curl -LsSf https://astral.sh/uv/install.sh | sh
インストールが完了したら、確認します:
uv --version
バージョン番号が表示されれば成功です!
ステップ 2:最初の仮想環境を作成する(2 分)#
データ分析プロジェクトを作成すると仮定します。
2.1 プロジェクトフォルダを作成
mkdir data-analysis
cd data-analysis
2.2 仮想環境を作成
プロジェクトフォルダ内で次のコマンドを実行します:
uv venv
次のようなメッセージが表示されます:
Creating virtual environment at .venv
このコマンドはプロジェクトフォルダ内に.venvという隠しフォルダを作成し、その中には:
- 独立した Python インタープリタ
- 独立したライブラリの保存スペース
2.3 仮想環境をアクティブにする
作成したら「アクティブ」にして、コンピュータに「次はこのプロジェクトの Python を使う」と伝えます。
Windows:
.venv\Scripts\activate
Mac/Linux:
source .venv/bin/activate
アクティブに成功すると、ターミナルのプロンプトの前に(.venv)が表示されます:
(.venv) C:\Users\YourName\data-analysis>
この(.venv)のマークは、あなたが今プロジェクトの独立した部屋にいることを示しています!
ステップ 3:ライブラリをインストールし、コードを実行する(2 分)#
今、あなたは仮想環境内にいるので、ライブラリをインストールできます。
3.1 pandas をインストール
uv pip install pandas
uv は非常に速く、数秒でインストールが完了します。
この pandas は **.venv内にのみインストールされ **、システム環境には影響しません!
3.2 コードをテスト
test.pyというファイルを作成します:
import pandas as pd
print(f"pandasのバージョン: {pd.__version__}")
data = pd.DataFrame({
'プロジェクト': ['A', 'B', 'C'],
'依存関係': ['pandas 1.5', 'pandas 2.0', 'openai 1.0']
})
print("\n仮想環境が彼らを平和に共存させる:")
print(data)
実行:
python test.py
出力:
pandasのバージョン: 2.x.x
仮想環境が彼らを平和に共存させる:
プロジェクト 依存関係
0 A pandas 1.5
1 B pandas 2.0
2 C openai 1.0
成功しました!
3.3 隔離性を検証する(重要な実験!)
今、実験を行い、仮想環境が本当に隔離されているかを確認します。
実験 1:仮想環境から退出
deactivate
ターミナルの(.venv)が消え、システム環境に戻ったことを示します。
実験 2:コードを実行しようとする
python test.py
エラーが表示されます:
ModuleNotFoundError: No module named 'pandas'
なぜですか?pandas は.venv内にのみインストールされており、システム環境には存在しないからです!
実験 3:仮想環境を再度アクティブにする
# Windows
.venv\Scripts\activate
# Mac/Linux
source .venv/bin/activate
再実行:
python test.py
再び正常に動作します!
これが仮想環境の魔法です:
- 部屋に入る(activate) → 家具がある(pandas)
- 部屋から出る(deactivate) → 空っぽ(pandas がない)
- システム環境は全く変わらない
なぜ uv を選ぶのか、pip ではなく?#
| 比較 | pip + venv | uv |
|---|---|---|
| インストール速度 | 遅い | 10-100 倍速い |
| pandas のインストール | 20 秒 | 2 秒 |
| 操作手順 | python -m venv .venv activate pip install | uv venv activate uv pip install |
| 学習曲線 | 2 つのツールを学ぶ必要がある | 1 つのツールで完結 |
初心者にとって、uv はより簡単で、より速いです。
第 4 章:初心者が最も陥りやすい 3 つの罠#
私は十数人の友人に教えましたが、90% の人がこの 3 つの罠に陥ります。
罠 1:仮想環境をアクティブにせずにコードを実行する#
症状:
明らかに pandas をインストールしたのに、ModuleNotFoundErrorが表示されます。
原因:
あなたは仮想環境内にインストールしましたが、システム環境でコードを実行しています。
解決策:
習慣を身につけましょう:コードを実行する前に、ターミナルに(.venv)があるか確認すること。
ない場合は実行:
# Windows
.venv\Scripts\activate
# Mac/Linux
source .venv/bin/activate
(.venv)が表示されたら、コードを実行します。
アクティブ状態の比較:
迅速な確認コマンド:
自分がどの環境にいるか不明な場合は、次のコマンドを実行します:
python -c "import sys; print(sys.executable)"
出力に.venvが含まれていれば正しい:
C:\Users\YourName\data-analysis\.venv\Scripts\python.exe ✅
出力がシステムパスであれば間違いです:
C:\Python\python.exe ❌ 仮想環境をアクティブにする必要があります
罠 2:.venv フォルダを Git にアップロードする#
症状:
プロジェクトフォルダが数百 MB になり、GitHub へのアップロードが遅くなります。
原因:
.venvにはすべてのライブラリの完全なコードが含まれており、サイズが非常に大きい(100-500MB)。
しかし、アップロードすべきではありません。理由は:
- 大きすぎて、帯域を無駄にする
- 異なるオペレーティングシステム間で互換性がない(Windows のものは Mac では使えない)
- 他の人は
requirements.txtを使って再構築できる
解決策:
プロジェクトのルートディレクトリに.gitignoreファイルを作成します:
.venv/
Git は.venvを無視します。
正しい方法:
requirements.txtをアップロードし、.venvはアップロードしません。
依存関係リストをエクスポートします:
uv pip freeze > requirements.txt
他の人がコードを受け取った後:
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
数秒で、環境が完全に一致します!
罠 3:requirements.txt の役割を知らない#
シナリオ:
3 ヶ月後、プロジェクトを再実行したいが、当時インストールしたライブラリを忘れてしまいました。
または、あなたがコードを友人に送ったが、彼は何をインストールする必要があるか分からない。
解決策:
requirements.txtを使用して依存関係を記録します。
生成:
uv pip freeze > requirements.txt
ファイル内容(正確なバージョンを記録):
pandas==2.1.0
numpy==1.25.2
requests==2.31.0
使用:
uv pip install -r requirements.txt
一発で全ての依存関係をインストールし、バージョンが完全に一致します。
類似の例:
requirements.txt = 買い物リスト
あなたはスーパーマーケット(PyPI)でリストに従って物を買います(ライブラリをインストール)
ベストプラクティス:
新しいライブラリをインストールするたびに、requirements.txtを更新します:
uv pip install new-package
uv pip freeze > requirements.txt
git add requirements.txt
git commit -m "add new-package"
第 5 章:一つのチェックリストで正しい習慣を築く#
新しいプロジェクトの標準プロセス(6 ステップ)#
□ プロジェクトフォルダを作成: mkdir my-project
□ フォルダに入る: cd my-project
□ 仮想環境を作成: uv venv
□ 環境をアクティブにする: source .venv/bin/activate (Mac) または .venv\Scripts\activate (Win)
□ 依存関係をインストール: uv pip install pandas numpy
□ 依存関係をエクスポート: uv pip freeze > requirements.txt
□ .gitignoreを作成: echo ".venv/" > .gitignore
このチェックリストをデスクに貼り付け、筋肉記憶を養いましょう。
よく使うコマンドの速見表#
| 操作 | Windows | Mac/Linux |
|---|---|---|
| 仮想環境を作成 | uv venv | uv venv |
| アクティブ化 | .venv\Scripts\activate | source .venv/bin/activate |
| 退出 | deactivate | deactivate |
| ライブラリをインストール | uv pip install ライブラリ名 | uv pip install ライブラリ名 |
| 依存関係をエクスポート | uv pip freeze > requirements.txt | 同左 |
| 依存関係をインストール | uv pip install -r requirements.txt | 同左 |
トラブルシューティングチェックリスト#
コードが実行に失敗した?順番に確認:
□ 仮想環境はアクティブになっていますか?(ターミナルに(.venv)のマークがありますか?)
□ ライブラリは仮想環境内にインストールされていますか?(アクティブにした後にpip listで確認)
□ ターミナルの現在のディレクトリは正しいですか?(pwdまたはcdで確認)
□ requirements.txtは更新されていますか?
3 つの鉄則#
鉄則 1:システム環境にライブラリをインストールしない
システム環境には Python と uv だけをインストールし、他のものは何もインストールしない。
鉄則 2:新しいプロジェクトの最初のステップ - 仮想環境を作成する
習慣を身につける:mkdir → cd → uv venv → activate
鉄則 3:統一して uv を使用し、pip を混用しない
pip installとuv pip installを混ぜて使わない。
次に何を学ぶべきか?#
あなたはすでに仮想環境の核心的なスキルを習得しました!
選択肢としての進化方向:
- Git バージョン管理を学ぶ(コードの変更を管理)
- VS Code + Python プラグインを学ぶ(プロのエディタ)
- Jupyter Notebook を学ぶ(インタラクティブプログラミング)
- uv の高度な機能を深く学ぶ(uv.lock ロックファイル)
最も重要なアドバイス:
ただチュートリアルを読むだけでなく、3 つのプロジェクトを実際にやってみてください:
- プロジェクト 1:データ分析スクリプト(pandas を使用)
- プロジェクト 2:シンプルなクローラー(requests を使用)
- プロジェクト 3:AI チャットボット(openai を使用)
各プロジェクトで仮想環境を使用し、3 つのプロジェクトを完了すれば、仮想環境の理解は 10 回チュートリアルを読むよりも深まります。
この言葉を覚えておいてください:
"仮想環境は面倒ではなく、命の綱です。"
これでプロジェクトが互いに喧嘩しないようにする方法が分かりました。AI を使って面白いことをしてみましょう!