我按照Google客户端库页面的说明开始使用Python中的Vision API(我运行的是2.7)。由于我的代码在Docker(一个Flask应用程序)中运行,我按照以下方式执行了说明:
上述步骤导致以下错误:
> RetryError: GaxError(Exception occurred in retry method that was not
> classified as transient, caused by <_Rendezvous of RPC that terminated
> with (StatusCode.UNAUTHENTICATED, Traceback (most recent call last):
> File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi",
> line 154, in grpc._cython.cygrpc.plugin_get_metadata
> (src/python/grpcio/grpc/_cython/cygrpc.c:7054) File
> "/usr/local/lib/python2.7/site-packages/grpc/_plugin_wrapping.py",
> line 106, in __call__
> AuthMetadataPluginCallback(wrapped_cygrpc_callback)) File "/usr/local/lib/python2.7/site-packages/google/auth/transport/grpc.py",
> line 73, in __call__
> callback(self._get_authorization_headers(context), None) File "/usr/local/lib/python2.7/site-packages/google/auth/transport/grpc.py",
> line 61, in _get_authorization_headers
> headers) File "/usr/local/lib/python2.7/site-packages/google/auth/credentials.py",
> line 121, in before_request
> self.refresh(request) File "/usr/local/lib/python2.7/site-packages/google/oauth2/service_account.py",
> line 310, in refresh
> request, self._token_uri, assertion) File "/usr/local/lib/python2.7/site-packages/google/oauth2/_client.py",
> line 143, in jwt_grant
> response_data = _token_endpoint_request(request, token_uri, body) File
> "/usr/local/lib/python2.7/site-packages/google/oauth2/_client.py",
> line 98, in _token_endpoint_request
> body = urllib.parse.urlencode(body) AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urlencode'
> )>)
我认为问题与我的信用有关,因为上面写着状态码。未经验证,但我无法修复此问题。有人能帮忙吗?谢谢
TL;DR-如您所观察到的,您的凭据有问题。使用应用程序默认凭据将更加简单,并使您的应用程序可以跨多个环境移植。更具体地说,如果您已经在gcloud中拥有一组可用凭据,则可以使用gcloud auth Application Default login在gcloud中一次性激活应用程序默认凭据。
Greg,我在我的机器上尝试了这个示例,遵循了Cloud Vision API客户端库页面上提到的步骤,它对我很有用。
以防万一,如果步骤不清楚,我会带你过去:
>
pip安装--升级google cloud vision
在计算机/docker容器上设置应用程序默认凭据。您似乎提到您成功运行了gcloud init。这不足以设置应用程序默认凭据。相反,您必须运行步骤中提到的以下命令,该命令将要求您在浏览器中打开链接,并且您必须将浏览器中的确认信息粘贴回命令行。
gcloud验证应用程序默认登录
下载测试图像wakeupcat。jpg或使用自己的图像。遗憾的是,这一部分在页面上没有明确提及。
创建一个名为“cloud vision example”的文件。py或您喜欢的具有以下内容的任何其他名称(注意:我已在此处更新了图像文件路径):
云视觉示例。py
import io
import os
# Imports the Google Cloud client library
from google.cloud import vision
# Instantiates a client
vision_client = vision.Client()
# The name of the image file to annotate
file_name = os.path.join('.', 'wakeupcat.jpg')
# Loads the image into memory
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = vision_client.image(
content=content)
# Performs label detection on the image file
labels = image.detect_labels()
print('Labels:')
for label in labels:
print(label.description)
输出:
$ python cloud-vision-example.py
Labels:
cat
photo caption
small to medium sized cats
cat like mammal
whiskers
snout
kitten
asian
>
如果未设置GOOGLE\u APPLICATION\u凭据,客户端库将尝试使用gcloud应用程序默认凭据(应在此之前设置)。
如果您的应用程序正在app Engine或Compute Engine上运行,则将使用关联的内置服务帐户作为最后手段。
问题内容: 我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201? 对于诸如404之类的错误,我们可以致电: 但是对于201我得到 LookupError:201都不例外 我是否需要创建自己的例外,像这样的文档? 问题答案: 你可以在这里阅读。
问题内容: 我正在使用Vim编写Python代码,每次我想运行我的代码时,都在Vim中键入以下代码: 这令人沮丧,所以我一直在寻找一种更快的方法来在Vim中运行Python代码。从终端执行Python脚本吗?我正在使用Linux。 问题答案: 如何将-添加到您的-file,创建映射: 然后您可以按来执行当前缓冲区 说明: :Vim将自动执行的命令(此处:如果您打开python文件) :创建在插入/
我克隆了这个存储库https://github.com/TomasMikula/RichTextFX 一切都很好,智力也没有抱怨。 然后我尝试在intelliJ中运行CloneDemo(包括参数),结果就是这样。有什么想法吗? 演示模块的gradle脚本构建了一个fatJar。但是intelliJ没有使用这个。当用jar运行程序时,它不会出现问题。
我在docker容器中运行了量角器硒测试。我必须测试一个不安全的网站。对于其中一个函数,API调用从支持的chrome返回一些数据,返回状态代码400。我在量角器配置文件中添加了以下内容: chrome参数(“--headless”,“--no sandbox”,“--disable dev shm usage”) 能力: 我还添加了以下内容。环境文件: 以下是我收到的网络日志: 需要注意的是,当
问题内容: 我需要在运行时为方法生成代码。能够运行任意代码并具有文档字符串非常重要。 我想出了一个结合和的解决方案,这是一个虚拟的示例: 是否有更好/更安全/更惯用的方式获得相同的结果? 问题答案: 基于Theran的代码,但将其扩展为类的方法: 应该打印:
我有一个安装了python和java的docker映像,现在我想将这两个进程作为docker的子进程运行。 我查看了这篇文章,它解释了如何在安装了docker和python的情况下准备图像。它并没有解释如何让它们都运行。如何使用python和Java运行Docker? 我检查了如何在dockerhttps://runnable.com/docker/rails/run-multiple-proce