google.cloud导入存储:无法导入存储空间

Mar*_*eis 12 python google-cloud-storage google-cloud-platform

我尝试按照我在此处找到的google教程运行下面的代码:https://cloud.google.com/docs/authentication/production

def implicit():
    from google.cloud import storage

    # If you don't specify credentials when constructing the client, the
    # client library will look for credentials in the environment.
    project = 'my_project_name'
    storage_client = storage.Client(project=project)

    # Make an authenticated API request
    buckets = list(storage_client.list_buckets())
    print(buckets)

implicit()
Run Code Online (Sandbox Code Playgroud)

但它一直给我以下错误:

Traceback (most recent call last):
  File "[PATH]/scratch_5.py", line 13, in <module>
    implicit()
  File "[PATH]/scratch_5.py", line 2, in implicit
    from google.cloud import storage
ImportError: cannot import name storage
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

dse*_*sto 24

我发现您正在尝试使用Google云端存储客户端库.

要使用它,首先应确保它已安装在您的机器中:

pip install --upgrade google-cloud-storage
Run Code Online (Sandbox Code Playgroud)

然后,您应该通过在运行代码的机器中设置环境变量来设置身份验证(如果您使用的是应用程序默认凭据,请参阅您提到的文档),GOOGLE_APPLICATION_CREDENTIALS如下所示.如果您使用的是Windows,请按照文档中提供步骤进行操作.

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/file.json"
Run Code Online (Sandbox Code Playgroud)

或者,您可以尝试使用显式凭据.您共享的一个(使用从环境获取的隐式凭据)和使用显式凭据的一个之间的唯一区别是,当您声明GCS客户端时,您应该执行以下操作:

storage_client = storage.Client.from_service_account_json('/path/to/SA_key.json')
Run Code Online (Sandbox Code Playgroud)

完成所有这些后,运行您提供的示例代码应该没有问题.为了不断了解GCS及其客户端库,请随意搜索我链接的文档,并查看库参考页面.