【问题标题】:Google Colab drive mount (with underscore) is not workingGoogle Colab 驱动器安装(带下划线)无法正常工作
【发布时间】:2022-02-13 19:04:14
【问题描述】:

直到昨天(1 月 20 日)我可以连接到另一个 google drive 帐户(使用 drive._mount),但是当我今天尝试这个时,google colab 向我显示了这个错误:

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

    /usr/local/lib/python3.7/dist-packages/google/colab/drive.py in _mount(mountpoint, force_remount, timeout_ms, use_metadata_server, ephemeral)
    294       wrote_to_fifo = True
    295     elif case == 5 and not use_metadata_server:
--> 296       raise ValueError('mount failed: invalid oauth code')
    297     elif case == 6:
    298       # Terminate the DriveFS binary before killing bash.

ValueError: mount failed: invalid oauth code

奇怪的是错误告诉我“无效的 oauth 代码”,但不允许我连接到谷歌页面并复制代码!

我设置了 use_metadata_server=True 但这一次出现了新的错误:

    from google.colab import drive
    drive._mount('/content/drive/', use_metadata_server=True)
ValueError                                Traceback (most recent call last)
<ipython-input-5-42a561ce7057> in <module>()
      1 from google.colab import drive
----> 2 drive._mount('/content/drive/', use_metadata_server=True)

/usr/local/lib/python3.7/dist-packages/google/colab/drive.py in _mount(mountpoint, force_remount, timeout_ms, use_metadata_server, ephemeral)
    285             ': timeout during initial read of root folder; for more info: '
    286             'https://research.google.com/colaboratory/faq.html#drive-timeout')
--> 287       raise ValueError('mount failed' + extra_reason)
    288     elif case == 2:
    289       # Not already authorized, so do the authorization dance.

ValueError: mount failed

我也使用了 drive.mount 但显示弹出窗口并要求我输入另一个帐户凭据。我输入的时候出现这个错误:

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

MessageError                              Traceback (most recent call last)
<ipython-input-1-91874b305a32> in <module>()
      1 from google.colab import drive
----> 2 drive.mount('/content/drive/')

3 frames
/usr/local/lib/python3.7/dist-packages/google/colab/_message.py in read_reply_from_input(message_id, timeout_sec)
    104         reply.get('colab_msg_id') == message_id):
    105       if 'error' in reply:
--> 106         raise MessageError(reply['error'])
    107       return reply.get('data', None)
    108 

MessageError: Error: credential propagation was unsuccessful

我认为这是新政策。有解决办法吗?

【问题讨论】:

  • 昨天我整天都在使用 Colab,我认为他们在欧洲中部时间晚上 8 点左右推送了一些更改,然后 drive._mount(..) “exploit”突然停止工作。无论如何,我们在这里讨论的是同样的问题:stackoverflow.com/questions/70791308/…
  • 没错,我不知道发生了什么!

标签: python-3.x runtime-error google-colaboratory


【解决方案1】:

此功能已被删除,您现在只能从您的笔记本电脑的同一帐户安装 google 驱动器。 https://github.com/googlecolab/colabtools/issues/2562#issuecomment-1017869732

【讨论】:

  • 您确定它已被删除吗?这不是错误?
  • @OmidKhalafBeigi 是的,已确认。事实上,其中一个 colab 模组正在收集很多不喜欢的东西 :)
【解决方案2】:

目前唯一有效的解决方案是rom this similar question but two months ago:

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
%cd /content
!mkdir drive
%cd drive
!mkdir MyDrive
%cd ..
%cd ..
!google-drive-ocamlfuse /content/drive/MyDrive

希望drive.mount的正常方式早日修复!

【讨论】:

  • 谢谢,这成功了。
【解决方案3】:

正如@user1086010 提到的,此功能已被删除。我正在使用“gdrive”包。运行以下笔记本代码块以安装 gdrive 包

import os

com_wget = "sudo wget " +"https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_386.tar.gz"
com_unzip = "sudo tar -xzf gdrive_2.1.1_linux_386.tar.gz"
com_permission = "sudo chmod +x gdrive"
com_install_executor = "sudo install gdrive /usr/local/bin/gdrive"

os.system(com_wget)
os.system(com_unzip)
os.system(com_permission)
os.system(com_install_executor)

然后用“gdrive list”连接你的驱动器:

!sudo gdrive list

您可以通过以下方式下载文件:

!gdrive download <gdrive_file_id>

你可以上传:

!gdrive upload <path_to_file>

或目录:

!gdrive upload -r <path_to_dir>

您可以使用以下方法将文件上传到特定的 gdrive 文件夹:

!gdrive upload --parent <gdrive_folder_id> <path_to_file>

要删除身份验证令牌,请运行以下命令:

!rm -rf ~/.gdrive/token_*.json

查看此链接以获取软件包的参考用例和文档: gdrive package link

【讨论】:

    【解决方案4】:

    好的,在这个问题得到解决之前,我为我的项目做了这个技巧:
    我与其他帐户共享了我需要的文件(如数据集)。为此,您应该:

    1. 转到您的 google 驱动器(存储文件的位置),然后右键单击它并选择“共享”
    2. 点击“更改为知道链接的任何人”
    3. 复制链接并在新窗口中打开
    4. 在右上角,点击您的 google 帐户列表并选择您需要的帐户
    5. 在打开的窗口中,点击右上角的“将快捷方式添加到云端硬盘”,然后选择要在其中保存文件的位置
    6. 您的文件现在可以在您选择的帐户中访问

    【讨论】:

      【解决方案5】:

      我无法将文件从我的 gdrive 上传或下载到我的 colab(同一帐户,48 小时前工作)。

      下划线与否。

      是的,如果您在 Internet 上与任何人共享文件并使用 !gdown,您可以将文件从 gdrive 加载到 colab,但祝您好运之后将其保存在 gdrive 上。

      Pydrive 只允许您上传小文件。

      你从来没有想过世界上最大的 IT 公司会支持他的幼儿园表演。

      很遗憾他们太大而不能倒闭。 他们没有真正的竞争。

      【讨论】:

      • 尝试上传或下载文件时出现什么错误?我可以使用 mount(不带下划线),没关系...
      【解决方案6】:

      不管你喜不喜欢,现在我们无法从 colab 挂载另一个驱动器。所以忘记 drive._mount,因为它不起作用 (._mount)

      所以唯一有效的解决方案是将文件夹从其他驱动器复制到当前驱动器(您在 colab 中登录的帐户)并使用 drive.mount(而不是drive._mount)

      只需使用您的帐户登录 colab,该帐户在您的驱动器中包含您要挂载到的文件夹/目录

      【讨论】:

        猜你喜欢
        • 2021-09-01
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 2020-03-16
        • 2019-11-14
        • 2020-11-10
        • 2019-10-19
        • 2014-01-08
        相关资源
        最近更新 更多