Google Deep Learning VM运行TF训练脚本出现PermissionDeniedError问题
Google Deep Learning VM 脚本权限报错及环境适配解决方案
问题根因
Google Deep Learning VM 预装的TensorFlow运行环境仅对普通登录用户配置了专属虚拟环境,root用户默认不加载该虚拟环境,因此切换root后仅能找到系统自带的Python2.7且无TF包。普通用户触发PermissionDeniedError是因为操作的文件/目录归属权限不匹配。
可行解决方案
方案一:修正目录权限(推荐,无环境副作用)
- 执行以下命令将你的工作目录所有权修改为当前登录用户,解除读写权限限制:
将路径替换为你存放sudo chown -R $USER:$USER /path/to/your/work/directorygenerate_tfrecord.py、model_main_tf2.py等脚本的实际目录路径即可。 - 激活系统预配置的TF2虚拟环境:
激活成功后终端前缀会出现source /opt/deeplearning/venv/tf2/bin/activate(tf2)标识,可执行python --version、pip show tensorflow确认环境符合要求。 - 直接运行脚本即可:
python generate_tfrecord.py
方案二:临时携带环境执行(适合单次操作场景)
如果不想修改目录权限,可通过sudo -E参数保留当前用户的环境配置执行脚本,避免切换到root的默认Python环境:
sudo -E python generate_tfrecord.py
注意事项
不建议直接执行
sudo su切换到root用户操作,不仅会出现环境不匹配问题,还会导致新生成的文件归属为root,后续普通用户操作仍会触发权限报错。
手动安装依赖包时请先激活虚拟环境再执行pip install,避免依赖安装到全局Python环境导致虚拟环境内无法调用。
内容的提问来源于stack exchange,提问作者user27074
相关产品推荐
相关产品推荐

