MeWrite Docs

ModuleNotFoundError: No module named 'xxx' (venv not activated)

Python仮想環境が有効化されていない場合のエラー

概要

仮想環境(venv)を作成してパッケージをインストールしたにもかかわらず、ModuleNotFoundError が発生する場合、仮想環境が有効化されていないことが原因であることが多いです。

エラーメッセージ

ModuleNotFoundError: No module named 'requests'
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import flask
ModuleNotFoundError: No module named 'flask'

原因

1. 仮想環境が有効化されていない

1
2
3
4
5
6
7
8
# 仮想環境を作成
python -m venv venv

# パッケージをインストール(システムPythonに入る)
pip install requests  # NG: 仮想環境が有効化されていない

# スクリプト実行
python main.py  # ModuleNotFoundError

2. 新しいターミナルで有効化を忘れた

1
2
3
4
5
6
7
# ターミナル1で作業
source venv/bin/activate
pip install requests
# 動作OK

# ターミナル2(新規)で作業
python main.py  # ModuleNotFoundError(有効化を忘れた)

3. 異なるPythonバージョンで作成

1
2
3
4
5
# Python 3.9で仮想環境を作成
python3.9 -m venv venv

# Python 3.11で実行
python3.11 main.py  # 別のPython

解決策

1. 仮想環境を有効化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Linux/macOS
source venv/bin/activate

# Windows (cmd)
venv\Scripts\activate.bat

# Windows (PowerShell)
venv\Scripts\Activate.ps1

# 有効化の確認(プロンプトに(venv)が表示される)
(venv) $ which python
/path/to/project/venv/bin/python

2. パッケージを再インストール

1
2
3
4
5
6
7
8
# 仮想環境を有効化してから
source venv/bin/activate

# パッケージをインストール
pip install -r requirements.txt

# または個別にインストール
pip install requests flask

3. 正しいPythonを直接指定

1
2
3
4
5
# 仮想環境のPythonを直接使用
./venv/bin/python main.py

# または
/path/to/project/venv/bin/python main.py

仮想環境の状態確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 現在使用中のPythonを確認
which python
# /path/to/project/venv/bin/python なら仮想環境内

# または
python -c "import sys; print(sys.prefix)"
# /path/to/project/venv なら仮想環境内

# インストール済みパッケージを確認
pip list

よくあるパターン

VS Codeでの設定

1
2
3
4
5
// .vscode/settings.json
{
  "python.defaultInterpreterPath": "${workspaceFolder}/venv/bin/python",
  "python.terminal.activateEnvironment": true
}

シェル起動時の自動有効化

1
2
3
4
5
6
7
8
# プロジェクトディレクトリに移動したら自動有効化
# .bashrc または .zshrc に追加
cd() {
    builtin cd "$@"
    if [ -f "venv/bin/activate" ]; then
        source venv/bin/activate
    fi
}

PyCharmでの設定

  1. File > Settings > Project > Python Interpreter
  2. Add Interpreter > Existing Environment
  3. venv/bin/python を選択

requirements.txtの活用

1
2
3
4
5
6
7
# パッケージ一覧を保存
pip freeze > requirements.txt

# 新しい環境でインストール
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

トラブルシューティング

PowerShellで有効化できない

1
2
3
4
5
6
7
8
# 実行ポリシーを確認
Get-ExecutionPolicy

# 制限されている場合
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# 再度有効化
.\venv\Scripts\Activate.ps1

仮想環境が壊れている場合

1
2
3
4
5
# 仮想環境を再作成
rm -rf venv
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

pip自体が古い

1
2
3
# 仮想環境内でpipをアップグレード
source venv/bin/activate
pip install --upgrade pip

deactivate(無効化)

1
2
3
4
# 仮想環境を無効化
deactivate

# プロンプトから(venv)が消える

関連エラー

関連エラー

Python の他のエラー

最終更新: 2025-12-24