[更新]
我已安装到Google云端硬盘帐户A。现在我想切换到帐户B,但我不能这样做,因为执行drive.mount()
时我无法输入新的身份验证密钥。
我尝试过并失败的事情:
force_remount=True
中的drive.mount()
,它将仅自动重新安装帐户A。不要求我提供新的安装目标。是否有任何API可以做到:
答案 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)
Enter your authorization code:
。google.colab.drive.flush_and_unmount()
不起作用。/content/drive
内创建一个虚拟文件。/content/drive
的内容与 Google drive UI 中的内容不同。rm -rf /content/drive
。google.colab.drive.flush_and_unmount()
Runtime -> Factory reset runtime
中。然后重新运行 google.colab.drive.mount('/content/drive', force_remount=True)
最终要求 Enter your authorization code
。
答案 8 :(得分:-1)
要强制Colab在不等待或重置运行时的情况下要求新密钥,可以撤消上一个密钥。 为此:
执行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
此后,我就可以安装驱动器了。