Ubuntu运行Python脚本出现python: Permission denied报错如何解决?
解决方案
报错核心原因为preprocess.py内部调用两个子脚本时使用的是python指令,而当前Ubuntu环境中python命令要么无对应可执行权限,要么未配置指向python3的软链接,可按以下步骤依次排查修复:
1. 配置python到python3的映射
Ubuntu 20.04及之后的版本默认没有将python指令绑定到python3解释器,先执行以下命令验证:
which python
如果返回python: not found,说明没有相关映射,执行以下命令安装映射包即可:
sudo apt update && sudo apt install -y python-is-python3
安装完成后python指令会默认指向系统内置的python3版本。
2. 修复python解释器的执行权限
如果上一步确认python指令已存在映射,就需要检查解释器的可执行权限:
ls -l $(which python)
正常输出的权限字段应为rwxr-xr-x,如果缺失可执行权限,执行以下命令修复:
sudo chmod 755 $(which python)
3. 调整子脚本执行权限
如果preprocess.py内部是通过直接执行脚本的方式调用两个子Python文件,需要给两个子文件添加可执行权限:
chmod +x label_json_to_tif.py generate_dataset.py
如果内部是通过python xxx.py的方式调用,不需要额外给脚本添加可执行权限,完成前两步即可解决问题。
可选优化方案
如果不想修改系统级的python指令映射,可以直接修改preprocess.py的源码,把所有调用子脚本时用到的python指令替换为python3,即可从根源规避环境差异导致的同类问题。
内容的提问来源于stack exchange,提问作者Marco Conopio
相关产品推荐
相关产品推荐

