#python #translate
Вопрос:
Я использую библиотеку Microsoft python по умолчанию для перевода текста, но каждый раз, когда я пробовал ее, она выдавала ошибку
# -*- coding: utf-8 -*-
# This simple app uses the '/translate' resource to translate text from
# one language to another.
# This sample runs on Python 2.7.x and Python 3.x.
# You may need to install requests and uuid.
# Run: pip install requests uuid
import os, requests, uuid, json
key_var_name = 'TRANSLATOR_TEXT_SUBSCRIPTION_KEY'
if not key_var_name in os.environ:
raise Exception('Please set/export the environment variable: {}'.format(key_var_name))
subscription_key = os.environ[key_var_name]
endpoint_var_name = 'TRANSLATOR_TEXT_ENDPOINT'
if not endpoint_var_name in os.environ:
raise Exception('Please set/export the environment variable: {}'.format(endpoint_var_name))
endpoint = os.environ[endpoint_var_name]
# If you encounter any issues with the base_url or path, make sure
# that you are using the latest endpoint: https://docs.microsoft.com/azure/cognitive-services/translator/reference/v3-0-translate
path = '/translate?api-version=3.0'
params = 'amp;from=enamp;to=deamp;to=it'
constructed_url = endpoint path params
headers = {
'Ocp-Apim-Subscription-Key': subscription_key,
'Content-type': 'application/json',
'X-ClientTraceId': str(uuid.uuid4())
}
# You can pass more than one object in body.
body = [{
'text' : 'Hello World!'
}]
request = requests.post(constructed_url, headers=headers, json=body)
response = request.json()
print(json.dumps(response, sort_keys=True, indent=4, separators=(',', ': ')))
после добавления секретного ключа и конечной точки, предоставленной azure, я получил эту ошибку
Traceback (most recent call last):
File "C:UserssetoCodesPythontranslationmain.py", line 14, in <module>
raise Exception('Please set/export the environment variable: {}'.format(key_var_name))
Exception: Please set/export the environment variable:
Комментарии:
1. в cmd.exe, можете ли вы проверить содержимое с помощью
echo %TRANSLATOR_TEXT_SUBSCRIPTION_KEY%
иecho %TRANSLATOR_TEXT_ENDPOINT%
? Очевидно, что не публикуйте здесь содержимое, а просто проверьте его на вменяемость2. когда я попробовал echo %TRANSLATOR_TEXT_SUBSCRIPTION_KEY% , он печатает %TRANSLATOR_TEXT_SUBSCRIPTION_KEY% без значений
3. Затем вам нужно настроить эти переменные среды с требуемыми значениями. Вам также, вероятно, потребуется подписаться на услугу (платную или бесплатную) и получить соответствующий ей API-ключ.
4. я уже зарегистрировался и получил секретный ключ, как установить эти переменные среды в Windows ? я попробовал использовать расширенные настройки со своего компьютера и добавил их, но проблема все еще присутствует
Ответ №1:
мне удалось решить эту проблему, удалив переменные среды и просто используя локальные переменные
# -*- coding: utf-8 -*-
# This simple app uses the '/translate' resource to translate text from
# one language to another.
# This sample runs on Python 2.7.x and Python 3.x.
# You may need to install requests and uuid.
# Run: pip install requests uuid
import os, requests, uuid, json
key_var_name = 'XXXXXXXXXXXXXXX'
subscription_key = key_var_name
endpoint_var_name = 'https://api.cognitive.microsofttranslator.com/'
endpoint = endpoint_var_name
# If you encounter any issues with the base_url or path, make sure
# that you are using the latest endpoint: https://docs.microsoft.com/azure/cognitive-services/translator/reference/v3-0-translate
path = '/translate?api-version=3.0'
params = 'amp;from=enamp;to=ar'
constructed_url = endpoint path params
headers = {
'Ocp-Apim-Subscription-Key': subscription_key,
'Ocp-Apim-Subscription-Region': "francecentral",
'Content-type': 'application/json',
'X-ClientTraceId': str(uuid.uuid4())
}
# You can pass more than one object in body.
body = [{
'text' : 'Hello World!'
}]
request = requests.post(constructed_url, headers=headers, json=body)
response = request.json()