我正在使用 DVC 来跟踪我的机器学习项目中的数据和步骤。我正在尝试使用谷歌驱动器设置远程。这不一定很困难,我使用了 dvc 的文档。
当我尝试使用时出现错误
dvc push
ERROR: unexpected error - Failed to authenticate GDrive: Access token refresh failed: invalid_grant: Token has been expired or revoked.
我第一次使用该命令时,我被重定向到谷歌驱动器登录页面,并且可以授予 dvc 编辑文件的权限。我想我忘记给它正确的权限,但如果我现在重新运行命令,我不会发送到登录页面。有谁知道如何再次登录 google Drive 并授予 dvc 正确的权限。
我已经尝试从我的项目中完全删除与 dvc 相关的所有内容,但这似乎没有帮助
要查找的内容在 Google Drive for DVC 页面的
gdrive_user_credentials_file
选项下进行了描述。
即,默认值为
$CACHE_HOME/pydrive2fs/{gdrive_client_id}/default.json
(除非指定了配置文件),其中每个平台的 CACHE_HOME
位置为:
macOS | Linux(*典型) | Windows |
---|---|---|
|
|
|
您应该能够删除该文件并运行
dvc pull
、dvc push
(或实际上涉及 DVC 访问远程存储的任何其他 DVC 命令)以再次生成该文件。
如果经常发生,您可以使用相同的选项
drive_user_credentials_file
来自定义该文件的位置。
$ dvc remote modify myremote \
gdrive_user_credentials_file path/to/mycredentials.json
这里是关于刷新令牌为什么会过期的相关讨论。有一些选项(具有委派的服务帐户,或发布应用程序以使刷新令牌更永久,现在使用内置的 DVC 应用程序)。它们都有一定的优点和缺点。请在票上留言或在这里讨论。
希望这还不算太晚。 我遇到了同样的问题。这是修复方法。
检查此位置是否有文件:
$CACHE_HOME/pydrive2fs/{gdrive_client_id}/default.json
此文件保存您的凭据。如果有这样的文件,它可能已损坏,删除它可以解决问题。
$CACHE_HOME 是:
~/Library/MacOS 缓存,
~/.cache 用于 Linux,
以及 Windows 的 %CSIDL_LOCAL_APPDATA%。