【问题标题】:IBM Bluemix API key error with PythonPython 的 IBM Bluemix API 密钥错误
【发布时间】:2026-02-21 21:30:01
【问题描述】:

我正在尝试使用 Python 对 watson_developer_cloud 进行编程,但遇到了 API 密钥错误。我的代码很简单:

import json
from watson_developer_cloud import VisualRecognitionV3 as VisualRecognition

visual_recognition = VisualRecognition('2016-05-20', api_key='<myAPIkey>')
test_url = 'https://www.ibm.com/ibm/ginni/images/ginni_bio_780x981_v4_03162016.jpg'

print(json.dumps(visual_recognition.classify(images_url=test_url)))

但由于某种原因,当我运行它时,出现 SSL 错误:

requests.exceptions.SSLError: 主机名“gateway-a.watsonplatform.net”与“access.alchemyapi.com”、“www.access.alchemyapi.com”中的任何一个都不匹配

我知道 API 密钥(上面省略)有效,因为当我使用 CURL 或 NodeJS 时,它工作得很好。

我真的很难过。有人可以帮忙吗?

【问题讨论】:

  • 更新:有趣的是,我发现如果我使用 CURL 访问 Watson,一切正常。所以这似乎与正在处理请求/SSL 有关,这绝对不是 IBM Watson 服务器的问题。

标签: ibm-cloud ibm-watson


【解决方案1】:

想通了。事实证明,由于服务器名称标识 (SNI),您需要 python>=2.7.8。我的 python 版本是 2.7.3,它不支持它,因此我得到了上面看到的错误。

这就是为什么 CURL 和其他使用 API 密钥的尝试有效,而我的 python 正在生成 SSLError。升级愉快!

【讨论】:

    【解决方案2】:

    快速破解: 更改文件 - watson_developer_cloud_service.py:243 如下:

    diff watson_developer_cloud_service.py watson_developer_cloud/watson_developer_cloud_service.py
    243c243
    <                                     params=params, data=data, files=files, verify=False, **kwargs)
    ---
    >                                     params=params, data=data, files=files, **kwargs)
    

    之后 -

    rm -f /usr/lib/python2.7/site-packages/watson_developer_cloud-0.14.0-py2.7.egg
    

    接着是..

    python setup.py install
    

    【讨论】: