Я запускаю проект 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
Я не знаю, почему так сложно даже правильно установить библиотеки. Это должен быть очень простой и плавный процесс. Что мне здесь не хватает?
Я отвечаю здесь:
добавьте следующую строку в requirements.txt
:
google-cloud-secret-manager == 2.0.0
Затем установите с помощью pip install -r requirements.txt
Как-то сначала это не сработало. После некоторых проб и ошибок это наконец сработало.
Вы можете выполнить следующие шаги или Официальную документацию , чтобы настроить клиентскую библиотеку Python:
Вы также можете использовать следующие CodeLabs, чтобы настроить клиентскую библиотеку Python для диспетчера секретов
Также ознакомьтесь с клиентом Python для Secret Manager API
Надеюсь, это поможет. Сообщите мне, если у вас возникнут проблемы при выполнении предыдущих шагов.