Не удается развернуть облачную функцию с помощью language_tool_python во время выполнения Python 3.7

#google-cloud-platform #deployment #google-cloud-functions #languagetool

#google-cloud-platform #развертывание #google-cloud-функции #languagetool

Вопрос:

Как вы используете языковой инструмент в облачной функции Google? Я пытаюсь развернуть облачную функцию в GCP с помощью среды выполнения Python 3.7. Я мог бы использовать библиотеку, используя мою локальную виртуальную среду, где у меня установлена Java.

Но когда я пытаюсь развернуть ее в облачной функции, я получаю ошибку ModuleNotFoundError: установка Java не обнаружена. Пожалуйста, установите java для использования language-tool-python.

Я использую библиотеку language_tool_python в облачной функции

 # install and import for grammar accuracy
import language_tool_python
tool = language_tool_python.LanguageTool('en-IN')
matches = tool.check(input_string)
  

в requirement.txt у нас есть —

 language-tool-python==2.4.5
  

Я получаю следующее сообщение об ошибке —

 Function failed on loading user code. Error message: Code in file main.py can't be loaded. Did you list all required modules in requirements.txt? Detailed stack trace: Traceback (most recent call last):
 File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", line 359, in check_or_load_user_function _function_handler.load_user_function() 
File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", 
 line 236, in load_user_function spec.loader.exec_module(main_module) File "<frozen importlib._bootstrap_external>", line 728, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/user_code/main.py", line 10, in <module> from libraries.unknown_word import word_meaning File "/user_code/libraries/unknown_word.py", line 18, in <module> tool = language_tool_python.LanguageTool('en-IN') 
File "/env/local/lib/python3.7/site-packages/language_tool_python/server.py", line 46, in __init__ self._start_server_on_free_port() File "/env/local/lib/python3.7/site-packages/language_tool_python/server.py", line 183, in _start_server_on_free_port self._start_local_server() 
File "/env/local/lib/python3.7/site-packages/language_tool_python/server.py", line 193, in _start_local_server download_lt() File "/env/local/lib/python3.7/site-packages/language_tool_python/download_lt.py", line 144, in download_lt confirm_java_compatibility() 
File "/env/local/lib/python3.7/site-packages/language_tool_python/download_lt.py", line 75, in confirm_java_compatibility 
raise ModuleNotFoundError('No java install detected. Please install java to use language-tool-python.') 
ModuleNotFoundError: No java install detected. Please install java to use language-tool-python. 
  

Может кто-нибудь, пожалуйста, предоставить решение, как использовать LanguageTool из функций без сервера?

Как мы можем использовать среду Java в облачной функции вместе с Python 3.7?

Ответ №1:

Обязательное условие документации ясно, требуются Python 3.7 и Java 8.0 .

И с облачными функциями у вас не может быть настраиваемой среды выполнения (по крайней мере, пока), и, следовательно, вы не можете использовать Java и Python в одной среде выполнения.

Для этого я рекомендую вам использовать Cloud Run. Это очень похоже на облачную функцию, но, поскольку вам нужно создать свой собственный контейнер, вы можете настроить среду выполнения по своему усмотрению. Чтобы переключиться с одного на другое, я написал статью об этом (мою первую!)