Pythonでファイル操作やスクリプト実行を行った際、
次のようなエラーが表示されることがあります。
PermissionError: [Errno 13] Permission denied
このエラーは、Pythonの文法や処理内容の問題ではなく、
ファイルやディレクトリの「権限(Permission)」が原因で発生します。
特にMacでは、
セキュリティ設定や保存場所の影響により、
初心者がつまずきやすいエラーの一つです。
この記事では、
Mac環境で PermissionError: [Errno 13] が出る具体的な場面と、
安全な回避策・確認ポイントをわかりやすく解説します。
この記事でわかること
- PermissionError: [Errno 13] が出る具体的なケース
- Macで起こりやすい権限エラーの原因
- 安全な回避策と確認手順
- やってはいけないNG対応
結論:原因は「アクセス権限がない」だけ
先に結論です。
PermissionError: [Errno 13] が出る原因は、ほぼ次のいずれかです。
- 読み書き権限のないファイルを操作している
- 実行権限のないファイルを実行している
- システム保護領域にアクセスしている
- sudo が必要な場所を通常権限で操作している
順番に具体例を見ていきます。
具体例① 読み取り・書き込み権限がないファイル
次のようなコードを実行すると、
PermissionError が出ることがあります。
with open("/protected/sample.txt", "w") as f:
f.write("test")
確認方法
ls -l ファイル名
権限(rwx)が表示されます。
回避策① 操作可能なディレクトリを使う
Python初心者は、
ホームディレクトリ配下で作業するのが安全です。
例:
/Users/ユーザー名/project/
この配下であれば、
PermissionError が出る可能性は大きく下がります。
具体例② 実行権限がないファイルを実行している
Pythonファイルを次のように実行した場合、
./script.py
この形式では 実行権限 が必要です。
確認方法
ls -l script.py
x が付いていない場合、実行できません。
回避策② 実行権限を付与する
chmod +x script.py
または、
pythonコマンド経由で実行する方法が安全です。
python3 script.py
具体例③ システム保護領域にアクセスしている
Macでは、次のディレクトリは強く保護されています。
- /System
- /usr/bin
- /Library
これらに対する操作は、
PermissionError が出て当然です。
回避策③ システム領域は触らない
学習・開発用途では、
- system Python の修正
- システムディレクトリへの書き込み
は不要です。
ユーザーディレクトリ+仮想環境(venv)を使うようにしましょう。
具体例④ 仮想環境を有効化せずに pip install している
仮想環境を使っている場合、
有効化していない状態で pip install を実行すると、
PermissionError が出ることがあります。
確認ポイント
(venv)
がターミナルに表示されているか確認してください。
よくあるNG対応(やってはいけない)
- sudo python を使う
- sudo pip install を多用する
- 権限エラーを無視して進める
- system Python を直接いじる
これらは、
後から環境が壊れる原因になります。
まとめ
Pythonで PermissionError: [Errno 13] が出る原因は、
次のいずれかであることがほとんどです。
- ファイル・ディレクトリの権限不足
- 実行権限が付与されていない
- システム保護領域へのアクセス
sudoで無理やり解決しないことが、
最も重要な回避策です。
コメントを残す