GCP AI平台JupyterLab修改Python系统文件报PermissionError如何解决
GCP AI平台JupyterLab修改系统Python文件权限报错解决方案
报错原因
/usr/lib/python3.7/属于系统级目录,GCP AI平台的JupyterLab默认以普通用户身份运行,没有系统目录的写入权限,因此直接打开文件写入会触发PermissionError。
解决方案
方案1:使用sudo权限执行替换(操作最简单,推荐)
直接在Jupyter单元格中执行带sudo的sed命令完成文本替换,sudo会临时获取root权限操作系统文件:
!sudo sed -i 's/if cache:/if False:/g' /usr/lib/python3.7/multiprocessing/semaphore_tracker.py
执行完成后可以运行以下命令验证修改是否生效:
!grep "if False:" /usr/lib/python3.7/multiprocessing/semaphore_tracker.py
如果有匹配输出则说明修改成功。
方案2:运行时猴子补丁(无系统文件修改,更安全)
如果不想改动全局系统Python文件,可在自己的业务代码开头添加运行时补丁,不需要修改源文件即可达到同样效果:
import multiprocessing.semaphore_tracker # 直接清空缓存,等价于将if cache:的判断结果置为False multiprocessing.semaphore_tracker._cache = []
方案3:用sudo运行自定义修改脚本
如果要使用你自己写的Python代码完成修改,可以将代码保存为py文件后用sudo执行:
- 先把你的修改代码保存为
modify_semaphore.py - 在Jupyter单元格执行:
!sudo python3 modify_semaphore.py
注意事项
如果执行sudo时提示需要输入密码,说明当前实例的普通用户没有sudo权限,需要联系实例管理员为你开通root权限,或者由管理员协助修改对应文件。
内容的提问来源于stack exchange,提问作者SUBHASH KALICHARAN
相关产品推荐
相关产品推荐

