Google Colab挂载Drive重复授权繁琐,求更优解决方案
简化Google Colab挂载Google Drive的重复授权流程
嘿,我完全懂这种每次启动Colab会话都要重复点“Allow”、复制粘贴授权码的麻烦——之前我也被这个繁琐的流程折腾了好久!下面几个亲测有效的方法,能帮你大幅简化甚至跳过重复授权步骤:
方法1:使用Google服务账号(Service Account)实现无交互挂载
这是最稳定的“半永久”解决方案,适合频繁使用Colab的场景,无需每次手动授权。步骤如下:
创建并配置服务账号
- 登录Google Cloud控制台,创建一个新项目(如果没有的话)。
- 在「IAM与管理」→「服务账号」页面,点击「创建服务账号」,填写名称和描述后完成创建。
- 为该服务账号添加「Editor」权限(或者更精细的权限,比如只给Drive访问权限),然后点击「创建密钥」,选择JSON格式下载密钥文件,务必妥善保存这个文件。
给服务账号授权访问你的Drive文件
- 打开你的Google Drive,找到需要Colab访问的文件夹/文件,右键选择「共享」,把服务账号的邮箱(即JSON文件里的
client_email字段)添加为协作者,赋予相应的读写权限。
- 打开你的Google Drive,找到需要Colab访问的文件夹/文件,右键选择「共享」,把服务账号的邮箱(即JSON文件里的
在Colab中使用服务账号挂载Drive
- 把刚才下载的JSON密钥文件上传到你的Drive(比如放在
/content/gdrive/My Drive/Colab Notebooks/keys/目录下)。 - 在Colab中运行以下代码即可无交互挂载Drive:
from google.colab import auth from oauth2client.service_account import ServiceAccountCredentials from google.colab import drive # 加载服务账号密钥 scope = ['https://www.googleapis.com/auth/drive'] creds = ServiceAccountCredentials.from_json_keyfile_name('/content/gdrive/My Drive/Colab Notebooks/keys/your-service-account-key.json', scope) auth.authenticate_user() drive.mount('/content/gdrive')
第一次运行可能需要手动挂载一次Drive来读取密钥文件,之后每次启动会话直接运行这段代码就能自动挂载,无需再重复授权。
- 把刚才下载的JSON密钥文件上传到你的Drive(比如放在
方法2:利用Colab账号关联简化操作(适合轻度使用)
如果你只是偶尔使用Colab,不想折腾服务账号,可以试试这个小技巧:
- 当你完成一次授权挂载后,把挂载代码保存到笔记本中,同时确保Colab右上角的账号已关联你的Google账号。
- 虽然Colab的虚拟机每次重启都会重置,但账号关联状态会被保留,下次启动时只需点击「连接」,授权步骤会大幅简化(通常只需一次点击,无需复制密码)。
方法3:付费方案:Colab Pro+的持久化虚拟机
如果是重度用户且愿意付费,Colab Pro+提供了持久化虚拟机选项——你可以保留同一个虚拟机实例长达24小时,期间重启笔记本不需要重新授权挂载Drive,非常适合长时间运行项目的场景。
注意事项
- 服务账号的密钥文件非常敏感,不要分享给他人,也不要公开上传到公共代码仓库。
- 给服务账号的权限要遵循最小化原则,比如只给需要访问的Drive文件夹权限,避免不必要的安全风险。
内容的提问来源于stack exchange,提问作者Ori Mosenzon




