libcloud:驱动程序ini期间缺少1个必需的位置参数错误

2024-04-28 17:12:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用:

  • libcloud 2.2.1版本
  • python 3.5.2版
  • 虚拟的
  • 带有json凭证文件的GCE服务帐户

Python代码如下所示:

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver


def run():
    """ Run this script
    """
    ComputeEngine = get_driver(Provider.GCE)
    driver = ComputeEngine(user_id='****@****.com',
                           credential_file='serviceaccount.json',
                           project='****')

run()

当我运行代码时,我得到:

Traceback (most recent call last):
  File "./myscript.py", line 47, in <module>
    run()
  File "./myscript.py", line 21, in run
    project='ebs-it', secure=True)
  File "/***/virtualenv/lib/python3.5/site-packages/libcloud/compute/drivers/gce.py", line 1795, in __init__
    super(GCENodeDriver, self).__init__(user_id, key, **kwargs)
  File "/***/virtualenv/lib/python3.5/site-packages/libcloud/common/base.py", line 975, in __init__
    self.connection = self.connectionCls(*args, **conn_kwargs)
TypeError: __init__() missing 1 required positional argument: 'secure'

在我看来这是perfectly textbook。知道会出什么问题吗?你知道吗


Tags: run代码infrompyimportselfjson
1条回答
网友
1楼 · 发布于 2024-04-28 17:12:06

问题有两个方面:对谷歌的服务账户不熟悉,导致编码错误。你知道吗

  1. 每个服务帐户都有一个与之关联的电子邮件/ID,我只有在单击凭证屏幕上的“管理服务帐户”后才发现它。我错误地使用我的google帐户作为用户id,因为我不知道该在字段中放置什么(尽管这没有意义,但我看不到其他替代方法)。你知道吗
  2. 在检查libcloud代码之后,我发现了credential_file参数,它似乎比服务帐户文件应该使用的key参数更合适。这就是导致我所看到的实际错误的原因。你知道吗

相关问题 更多 >