AWS의 Lambda 함수에서 Python 맞춤법 검사 라이브러리 Pyenchant를 사용하려고합니다. Pyenchant는 Aspell과 같은 제공 업체의 단어 사전에 의존하는 C libenchant 라이브러리의 래퍼입니다.AWS Lambda에서 Pyenchant를 사용하여 패키지를로드 할 수 있지만 공급자 사전은로드 할 수 없으며 EC2에서 소스에서 컴파일하고 .so 파일을 추출 할 수 있습니다.
람다에서 실행되는 Python 코드에서 AWS Linux EC2 인스턴스에 C 라이브러리 (libenchant.so)를 컴파일하고 Lambda 배포 패키지에 출력을 복사하는 데 성공한 마법 라이브러리를 성공적으로 가져올 수 있습니다.
그러나 pyenchant 라이브러리는 작동해야하는 Lambda에서 실행할 때 단어 사전을로드 할 수 없습니다.
yum install aspell-en enchant-aspell
내가 다음 내 배포 패키지의/lib 폴더에 다음과 같은 추가하는 .so 파일을 복사 :
-
을 libenchant_aspell.so
- libaspell.so 그때 사용하여 EC2 인스턴스에 Aspell을 설치
- libenchant_ispell.so
- libenchant_myspell.so
- libenchant.so
libenchant_aspell.so가 실제 사전이지만 실제로 인식하지 못하고 다음에 어디로 갈지 알 수 없습니다. 다음은
내 lambda_handler 파이썬 코드 :from __future__ import print_function
import os
import sys
import re
import enchant
enchant.set_param("enchant.aspell.dictionary.path","/var/task/lib")
def lambda_handler(event, context):
print("# List available enchant dictionary languages")
print(enchant.list_languages())
b = enchant.Broker()
print("# List available enchant brokers")
print(b.describe())
d = enchant.Dict("en_GB")
# print(d.provider.name)
# print(d.provider.file)
return "Done"
그리고 여기에 람다 함수 호출의 출력입니다 : 당신이 import enchant
작품을 잘 볼 수 있지만,이 중 하나를 찾을 수 없기 때문에
START RequestId: 7539245b-d3d6-11e6-b7e6-edc1dc8cbdd4 Version: $LATEST
# List available enchant dictionary languages
[]
# List available enchant brokers
[]
Dictionary for language 'en_GB' could not be found: DictNotFoundError
Traceback (most recent call last):
File "/var/task/package_test.py", line 16, in lambda_handler
d = enchant.Dict("en_GB")
File "/var/task/enchant/__init__.py", line 558, in __init__
_EnchantObject.__init__(self)
File "/var/task/enchant/__init__.py", line 168, in __init__
self._init_this()
File "/var/task/enchant/__init__.py", line 565, in _init_this
this = self._broker._request_dict_data(self.tag)
File "/var/task/enchant/__init__.py", line 310, in _request_dict_data
self._raise_error(eStr % (tag,),DictNotFoundError)
File "/var/task/enchant/__init__.py", line 258, in _raise_error
raise eclass(default)
DictNotFoundError: Dictionary for language 'en_GB' could not be found
END RequestId: 7539245b-d3d6-11e6-b7e6-edc1dc8cbdd4
REPORT RequestId: 7539245b-d3d6-11e6-b7e6-edc1dc8cbdd4 Duration: 1.03 ms Billed Duration: 100 ms Memory Size: 256 MB Max Memory Used: 16 MB
을 사전 파일.
저는이 문제에 정말로 매달렸습니다. 6 시간 동안이 작업을 수행하는 방법을 알아 내려고 노력했습니다. 귀하의 도움에 미리 감사드립니다.