在烧瓶中找不到 Gcloud api

Gcloud not found in flask api

我在 GCP 中使用以下 python 方法。此方法在 test.py


@functools.lru_cache()
def get_project():
    return subprocess.check_output("gcloud config list --format 'value(core.project)'", shell=True).decode(
        "utf-8").strip()

当我 运行 test.py 仅在 tpu 上时,它有效,当我在 flask API 中使用此方法时,我得到错误

'gcloud not found'.

但是,同样的方法在 GCP VM 中单独和在 flask API 下有效。

我无法弄清楚这可能是什么原因。

这并不是您问题的确切答案,但您可能有兴趣了解 metadata server

this answer 我们可以或多或少地推断出元数据服务器也可以与 TPU 一起工作。请注意,虽然我不是 100% 确定这一点。

试试下面的代码,看看是否可以用它获取项目 ID。

import requests


def get_project():
    # https://cloud.google.com/compute/docs/metadata/default-metadata-values#project_metadata
    response = requests.get(
        "http://metadata.google.internal/computeMetadata/v1/project/project-id",
        headers={"Metadata-Flavor": "Google"}
    )
    return response.text