如何在Google Colab中卸载驱动器并重新安装到另一个驱动器?

时间:2019-02-23 00:55:40

标签: google-colaboratory drive unmount

[更新]

我关闭笔记本电脑并在1.5h之后重新打开它,现在运行drive.mount()将需要一个新密钥。不知道等待的最短时间...不知道等待的时间是否正常...

我已安装到Google云端硬盘帐户A。现在我想切换到帐户B,但我不能这样做,因为执行drive.mount()时我无法输入新的身份验证密钥。

我尝试过并失败的事情:

  1. 重新启动浏览器,重新启动计算机
  2. 使用force_remount=True中的drive.mount(),它将仅自动重新安装帐户A。不要求我提供新的安装目标。
  3. 更改帐户A密码
  4. 将运行时类型从GPU更改为“无”,然后再更改回GPU
  5. 以隐身模式打开所有内容
  6. 退出所有Google帐户

是否有任何API可以做到:

  • 忘记以前的身份验证密钥,以便它会问我一个新的密钥吗?
  • 卸下驱动器并忘记以前的身份验证密钥?

10 个答案:

答案 0 :(得分:9)

我发现“重新启动运行时...”无法正常工作,并且更改权限太麻烦了。
幸运的是,drive模块仅配备了您需要的功能:

from google.colab import drive
drive.flush_and_unmount()

答案 1 :(得分:3)

您可以通过从“运行时”菜单中选择“重置所有运行时...”项来重置Colab后端。

但是请注意,这将丢弃您当前的后端。

答案 2 :(得分:2)

针对您的问题的另一种解决方案是终止您的会话,然后再次运行您的代码(drive.mount())。

步骤:

1)按下“其他连接选项”按钮。 RAM和DISK旁边是小标志按钮

2)选择“管理会话”

3)按下“终止”按钮

4)。再次运行您的代码(drive.mount())。

现在将要求您输入新密钥。

答案 3 :(得分:2)

当您最近使用 flush_and_unmount() 挂载和卸载时,重新挂载不起作用。您应该遵循的正确步骤是(在发布时对我有用):

安装后使用:

from google.colab import drive
drive.mount('/content/drive')

卸载使用:drive.flush_and_unmount() 并且您看不到“驱动器/”文件夹,但相信我,您应该在使用 !rm -rf /content/drive 重新安装驱动器之前使用:

from google.colab import drive
drive.mount('/content/drive', force_remount=True)

您将再次收到新 Gmail 帐户的授权请求。

答案 4 :(得分:1)

您可以在运行系统->管理会话中终止会话。这样就可以完成工作,您可以重新安装驱动器。

答案 5 :(得分:0)

drive.mount()函数的当前代码位于https://github.com/googlecolab/colabtools/blob/fe964e0e046c12394bae732eaaeda478bc5fa350/google/colab/drive.py

它是/ opt / google / drive / drive中找到的驱动器可执行文件的包装。我发现可执行文件接受标志authorize_new_user,该标志可用于强制重新认证。

将drive.py文件的内容复制并粘贴到笔记本中。然后修改当前在第189行上对d.sendline()的调用,使其看起来像这样(请注意,添加了authorize_new_user标志):

d.sendline(
      ('cat {fifo} | head -1 | ( {d}/drive '
       '--features=max_parallel_push_task_instances:10,'
       'max_operation_batch_size:15,opendir_timeout_ms:{timeout_ms},'
       'virtual_folders:true '
       '--authorize_new_user=True '
       '--inet_family=' + inet_family + ' ' + metadata_auth_arg +
       '--preferences=trusted_root_certs_file_path:'
       '{d}/roots.pem,mount_point_path:{mnt} --console_auth 2>&1 '
       '| grep --line-buffered -E "{oauth_prompt}|{problem_and_stopped}"; '
       'echo "{drive_exited}"; ) &').format(
           d=drive_dir,
           timeout_ms=timeout_ms,
           mnt=mountpoint,
           fifo=fifo,
           oauth_prompt=oauth_prompt,
           problem_and_stopped=problem_and_stopped,
           drive_exited=drive_exited))

调用drive的{​​{1}}模块版本或您粘贴的模块版本,然后调用flush_and_unmount()的版本以其他用户身份登录!

答案 6 :(得分:0)

这是他们的常见问题解答中的解释。

为什么驱动器操作有时会因配额而失败? Google云端硬盘会实施各种限制,包括每个用户和每个文件的操作计数以及带宽配额。超过这些限制将如上所述触发Input/output error,并在Colab UI中显示一条通知。一个典型的原因是访问一个流行的共享文件,或者太快地访问了太多不同的文件。解决方法包括:

使用drive.google.com复制文件,请勿广泛共享,以免其他用户用尽其限制。 避免进行许多小的I / O读取,而选择以存档格式(例如.zip或.tar.gz文件)将数据从Drive复制到Colab VM,并在VM本地而不是已装载的Drive目录中取消存档数据。 等待一天以重新设置配额限制。

https://research.google.com/colaboratory/faq.html#drive-quota

答案 7 :(得分:0)

症状

  1. /content/drive 会自动安装,无需安装,也不会被要求提供 Enter your authorization code:
  2. 驱动器的缓存旧状态不断显示。
  3. 未显示实际的 Google 云端硬盘内容。
  4. 终止、重新启动、恢复出厂设置撤销权限、清除 Chrome 缓存均无效。
  5. 刷新和卸载 google.colab.drive.flush_and_unmount() 不起作用。

解决方案

  1. 在挂载点 /content/drive 内创建一个虚拟文件。
  2. 请花点时间确保 /content/drive 的内容与 Google drive UI 中的内容不同。
  3. 运行 rm -rf /content/drive
  4. 运行google.colab.drive.flush_and_unmount()
  5. 从菜单 Runtime -> Factory reset runtime 中。

然后重新运行 google.colab.drive.mount('/content/drive', force_remount=True) 最终要求 Enter your authorization code

答案 8 :(得分:-1)

要强制Colab在不等待或重置运行时的情况下要求新密钥,可以撤消上一个密钥。 为此:

  1. 转到https://myaccount.google.com/permissions(或在Google帐户页面上手动导航至安全管理第三方访问权限
  2. 在右上角,选择您的个人资料图片或初始图片,然后选择您要断开与Colab的驱动器的帐户,
  3. Google应用部分中选择 Google云端硬盘文件流,然后选择删除访问权限

执行drive.mount()现在将要求输入新密钥。

答案 9 :(得分:-1)

重新启动运行时并删除访问权限没有帮助。我发现我正在使用的笔记本在安装点上创建了目录:

from google.colab import drive
drive.mount('/content/drive')

Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).

我必须首先删除安装点上的子目录。首先,请确保您的驱动器未真正安装!

!find /content/drive

/content/drive
/content/drive/My Drive
/content/drive/My Drive/Colab Notebooks
/content/drive/My Drive/Colab Notebooks/assignment4
/content/drive/My Drive/Colab Notebooks/assignment4/output_dir
/content/drive/My Drive/Colab Notebooks/assignment4/output_dir/2020-04-05_16:17:15

上面的文件和目录是在我安装驱动器之前由笔记本意外创建的。确定(确定吗?)驱动器未装入后,请删除子目录。

!rm -rf /content/drive

此后,我就可以安装驱动器了。