简体   繁体   English

IBM Cloud-Watson NLC - TypeError: __init__() got an unexpected keyword argument 'iam_apikey'

[英]IBM Cloud-Watson NLC - TypeError: __init__() got an unexpected keyword argument 'iam_apikey'

I am currently trying to deploy an application from a repo.我目前正在尝试从 repo 部署应用程序。 ( https://github.com/IBM/nlc-icd10-classifier#run-locally ) But it gives me this error: https://github.com/IBM/nlc-icd10-classifier#run-locally )但它给了我这个错误:

Traceback (most recent call last):
  File "app.py", line 34, in <module>
    iam_apikey=nlc_iam_apikey
TypeError: __init__() got an unexpected keyword argument 'iam_apikey'

I am on Python 3.6.8我在 Python 3.6.8

app.py:应用程序.py:

load_dotenv(os.path.join(os.path.dirname(__file__), ".env"))

nlc_username = os.environ.get("NATURAL_LANGUAGE_CLASSIFIER_USERNAME")
nlc_password = os.environ.get("NATURAL_LANGUAGE_CLASSIFIER_PASSWORD")
nlc_iam_apikey = os.environ.get("NATURAL_LANGUAGE_CLASSIFIER_IAM_APIKEY")
classifier_id = os.environ.get("CLASSIFIER_ID")

# Use provided credentials from environment or pull from IBM Cloud VCAP
if nlc_iam_apikey != "placeholder":
    NLC_SERVICE = NaturalLanguageClassifierV1(
      iam_apikey=nlc_iam_apikey
    )
elif nlc_username != "placeholder":
    NLC_SERVICE = NaturalLanguageClassifierV1(
      username=nlc_username,
      password=nlc_password

.env: .env:

CLASSIFIER_ID=<add_NLC_classifier_id>
#NATURAL_LANGUAGE_CLASSIFIER_USERNAME=<add_NLC_username>
#NATURAL_LANGUAGE_CLASSIFIER_PASSWORD=<add_NLC_password>

NATURAL_LANGUAGE_CLASSIFIER_IAM_APIKEY="placeholderapikeyforstackoverflolw"

It seems that you ran into an issue with the Watson SDK.您似乎遇到了 Watson SDK 的问题。 Recently, with V4, they introduced a breaking change which I found in their release notes .最近,在 V4 中,他们引入了一项重大更改,我在他们的 发行说明中发现了这一更改。 There is a new, more abstract authentication mechanism that caters to different authentication types.有一种新的、更抽象的身份验证机制可以满足不同的身份验证类型。 You would need to slightly change the code for how NLC is initialized.您需要稍微更改如何初始化 NLC 的代码。

This is from the migration instructions :这是来自迁移说明

For example, to pass a IAM apikey:例如,要传递 IAM apikey:

Before

from ibm_watson import MyService

service = MyService(
    iam_apikey='{apikey}',
    url='{url}'
)

After(V4.0)之后(V4.0)

from ibm_watson import MyService
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator('{apikey}')
service = MyService(
    authenticator=authenticator
)
service.set_service_url('{url}')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM