Как правильно импортировать Облачные библиотеки Google в python3.6 в MACOS?

Я запускаю проект python3.6, который использует облачные библиотеки Google:

from google.cloud import secretmanager

def access_secret_version(project_id, secret_id, version_id=1):
    """
    Access the payload for the given secret version if one exists. The version
    can be a version number as a string (e.g. "5") or an alias (e.g. "latest").
    """
    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the secret version.
    name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"

    # Access the secret version.
    response = client.access_secret_version(request={"name": name})

    # Print the secret payload.
    #
    # WARNING: Do not print the secret in a production environment - this
    # snippet is showing how to access the secret material.
    payload = response.payload.data.decode("UTF-8")
    print("Plaintext: {}".format(payload))
    print(response)


if __name__ == "__main__":

    access_secret_version('my-project', 'APAC_URL')
    access_secret_version('my-project', 'APAC_SECRET')
    access_secret_version('my-project', 'PASSWORD')

Однако я не мог Не удалось найти способ правильно импортировать облачные библиотеки Google с помощью pip install Я пробовал venv / bin / pip install google-api-python-client и pip install -U google-cloud-secret-manager , и сообщения консоли показывают, что установка была успешно. Однако когда я запускаю приведенный выше код, я получаю следующую ошибку:

Traceback (most recent call last):
  File "utils/secret_accessor.py", line 1, in <module>
    from google.cloud import secretmanager
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/google/cloud/secretmanager/__init__.py", line 18, in <module>
    from google.cloud.secretmanager_v1.services.secret_manager_service.async_client import (
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/google/cloud/secretmanager_v1/__init__.py", line 18, in <module>
    from .services.secret_manager_service import SecretManagerServiceClient
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/google/cloud/secretmanager_v1/services/secret_manager_service/__init__.py", line 18, in <module>
    from .client import SecretManagerServiceClient
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/google/cloud/secretmanager_v1/services/secret_manager_service/client.py", line 27, in <module>
    from google.api_core import gapic_v1  # type: ignore
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/__init__.py", line 18, in <module>
    from google.api_core.gapic_v1 import config
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/google/api_core/gapic_v1/config.py", line 23, in <module>
    import grpc
  File "/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/grpc/__init__.py", line 23, in <module>
    from grpc._cython import cygrpc as _cygrpc
ImportError: dlopen(/Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/grpc/_cython/cygrpc.cpython-36m-darwin.so, 2): Symbol not found: __PyErr_FormatFromCause
  Referenced from: /Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/grpc/_cython/cygrpc.cpython-36m-darwin.so
  Expected in: flat namespace
 in /Users/my-code-base/automated_test/venv/lib/python3.6/site-packages/grpc/_cython/cygrpc.cpython-36m-darwin.so

Я не знаю, почему так сложно даже правильно установить библиотеки. Это должен быть очень простой и плавный процесс. Что мне здесь не хватает?

-1
задан 26 October 2020 в 06:58
2 ответа

Я отвечаю здесь:

добавьте следующую строку в requirements.txt :

google-cloud-secret-manager == 2.0.0

Затем установите с помощью pip install -r requirements.txt

Как-то сначала это не сработало. После некоторых проб и ошибок это наконец сработало.

0
ответ дан 4 January 2021 в 10:28

Вы можете выполнить следующие шаги или Официальную документацию , чтобы настроить клиентскую библиотеку Python:

Вы также можете использовать следующие CodeLabs, чтобы настроить клиентскую библиотеку Python для диспетчера секретов

Также ознакомьтесь с клиентом Python для Secret Manager API

Надеюсь, это поможет. Сообщите мне, если у вас возникнут проблемы при выполнении предыдущих шагов.

-1
ответ дан 4 January 2021 в 10:28

Теги

Похожие вопросы