MeWrite Docs

PermissionError: [Errno 13] Permission denied (pip)

pipでパッケージをインストールする際の権限エラー

概要

PermissionError: [Errno 13] Permission denied は、pipでパッケージをインストールする際に、書き込み権限がないディレクトリにインストールしようとした場合に発生します。

エラーメッセージ

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/lib/python3.x/site-packages/package'
Consider using the `--user` option or check the permissions.
PermissionError: [Errno 13] Permission denied: '/usr/lib/python3/dist-packages/...'

原因

  1. システムPythonへの直接インストール - 管理者権限が必要なディレクトリへの書き込み
  2. 仮想環境を使用していない - グローバル環境へのインストール試行
  3. 他のユーザーが作成した仮想環境 - 権限の不一致

解決策

1. 仮想環境を使用(推奨)

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

# 有効化(Linux/Mac)
source venv/bin/activate

# 有効化(Windows)
.\venv\Scripts\activate

# パッケージをインストール
pip install package-name

2. –userオプションを使用

1
2
3
4
5
# ユーザーディレクトリにインストール
pip install --user package-name

# インストール先を確認
python -m site --user-site

3. pipxを使用(CLIツール向け)

1
2
3
4
5
6
7
# pipxをインストール
pip install --user pipx
pipx ensurepath

# CLIツールをインストール
pipx install black
pipx install flake8

4. sudoを使用(非推奨)

1
2
3
4
5
# 非推奨: システムPythonを汚染する可能性がある
sudo pip install package-name

# より安全: システム全体にインストールする場合
sudo pip install --system package-name

仮想環境の選択

venv(標準ライブラリ)

1
2
3
4
5
6
7
8
9
# 作成
python -m venv myenv

# 有効化
source myenv/bin/activate  # Linux/Mac
myenv\Scripts\activate     # Windows

# 無効化
deactivate

virtualenv

1
2
3
4
5
6
7
8
# インストール
pip install --user virtualenv

# 作成
virtualenv myenv

# 有効化
source myenv/bin/activate

conda

1
2
3
4
5
6
7
8
# 作成
conda create -n myenv python=3.11

# 有効化
conda activate myenv

# 無効化
conda deactivate

pyenv + pyenv-virtualenv

1
2
3
4
5
6
7
8
# 仮想環境を作成
pyenv virtualenv 3.11.0 myenv

# 有効化
pyenv activate myenv

# ディレクトリに紐付け
pyenv local myenv

よくある状況

Dockerコンテナ内

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Dockerfile
FROM python:3.11

# 仮想環境なしで直接インストール(Docker内では問題なし)
RUN pip install --no-cache-dir -r requirements.txt

# または仮想環境を使用
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install --no-cache-dir -r requirements.txt

システムPythonを保護

1
2
3
4
5
# Debian/Ubuntu: システムパッケージを使用
sudo apt install python3-package-name

# pipでの直接インストールを禁止(Python 3.11+)
# PEP 668: externally-managed-environment

PEP 668エラー

error: externally-managed-environment

× This environment is externally managed
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 解決策1: 仮想環境を使用(推奨)
python -m venv venv
source venv/bin/activate
pip install package

# 解決策2: pipxを使用
pipx install package

# 解決策3: --break-system-packages(非推奨)
pip install --break-system-packages package

権限の確認と修正

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# site-packagesの場所を確認
python -c "import site; print(site.getsitepackages())"

# 権限を確認
ls -la /usr/local/lib/python3.x/site-packages/

# 仮想環境の所有者を確認
ls -la venv/

# 所有者を変更(自分のユーザーに)
sudo chown -R $USER:$USER venv/

ベストプラクティス

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# プロジェクトごとに仮想環境を作成
cd myproject
python -m venv .venv
source .venv/bin/activate

# requirements.txtを使用
pip install -r requirements.txt

# requirements.txtを更新
pip freeze > requirements.txt

# .gitignoreに追加
echo ".venv/" >> .gitignore

関連エラー

関連エラー

Python の他のエラー

最終更新: 2025-12-23