MacでPythonファイルを実行しようとしたとき、次のようなエラーが表示されて困ったことはありませんか。
zsh: permission denied: xxx.py
コードの内容は正しそうなのに、
「なぜ実行できないのか分からない」という状態になりやすいエラーです。
この記事では、Mac(zsh)環境でPython実行時に permission denied が出る主な原因と、順番に確認すべきポイントを初心者向けにまとめます。
※ 本記事は Mac + zsh + Python3 を前提に説明します。
この記事でわかること
- zsh: permission denied が出る仕組み
- Python実行時に起こりやすい原因
- 実行権限・コマンド指定の確認方法
- 安全に解決するための考え方
zsh: permission denied とは?
このエラーは、ファイルを実行する権限がない状態で直接実行しようとした場合に発生します。
例:
./test.py
このように ファイル自体を実行しようとしたとき、
実行権限がないと zsh が処理を拒否します。
原因① Pythonファイルに実行権限がない
最も多い原因は、ファイルに実行権限が付与されていないケースです。
確認方法
ls -l test.py
結果例:
-rw-r--r-- test.py
この場合、実行権限(x)が付いていません。
対処法① 実行権限を付与する
chmod +x test.py
その後、再度実行します。
./test.py
※ ただし、Python初心者の場合はこの方法は必須ではありません。
原因② 実行方法を間違えている(よくある)
Python初心者が最もつまずきやすいのがこのパターンです。
NG例
./test.py
推奨される実行方法
python3 test.py
この方法では ファイル自体を実行するのではなく、Pythonに処理させるため、
実行権限は不要です。
👉 基本的には python3 コマンドで実行するのが安全 です。
原因③ 実行対象がPythonファイルではない
次のような場合も permission denied が出ます。
- ディレクトリを実行しようとしている
- 拡張子を間違えている
- ファイル名を誤って指定している
確認ポイント
ls
実行しようとしているファイルが 本当に存在しているかを確認してください。
原因④ 仮想環境(venv)と実行環境がズレている
仮想環境を使っている場合、
- venvを有効化していない
- 別のPythonで実行している
といった状態でも、実行時エラーにつながることがあります。
確認ポイント
(venv)が表示されているかpython3 --versionの結果が想定通りか
やってはいけない対処法
sudoを付けて無理やり実行する- 権限を全開放(777)にする
これらは セキュリティ上おすすめできません。
sudo python3 test.py ← 非推奨
chmod 777 test.py ← 非推奨
それでも解決しない場合のチェックリスト
- python3 コマンドで実行しているか
- 実行対象が正しいファイルか
- 作業ディレクトリが合っているか
- 仮想環境が正しく有効化されているか
まとめ
Python実行時にzsh: permission denied が出る場合、原因はほぼ次のいずれかです。
- 実行権限が付いていない
- 実行方法を間違えている
- ファイル指定が誤っている
- 仮想環境と実行環境がズレている
基本は python3 ファイル名.py で実行することで、多くの問題は回避できます。
コメントを残す