首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Lambda python:无法导入模块'lambda_function':没有名为'regex._regex‘的模块

AWS Lambda python:无法导入模块'lambda_function':没有名为'regex._regex‘的模块
EN

Stack Overflow用户
提问于 2020-10-23 18:17:21
回答 2查看 2.2K关注 0票数 1

我目前正在使用AWS Lambda。以下是代码的摘录:

代码语言:javascript
复制
import pandas as pd
import re
import nltk
from stop_words import get_stop_words
stopwords = get_stop_words('en')
nltk.download('punkt')
nltk.download('wordnet')
wn = nltk.WordNetLemmatizer()

def lemmatization(txt):
    text = ([wn.lemmatize(word) for word in txt])
    return text

def lambda_handler(event,context):
    
        bucket = "aaabbb"
        key = "cccddd"
        s3_client = boto3.client('s3')
        s3_file = s3_client.get_object(Bucket=bucket, Key=key)
        s3_file_data = s3_file['Body'].read()
        s3_file_data = io.BytesIO(s3_file_data)
        df = pd.read_csv(s3_file_data)

        df['ABC'] = df['ABC'].apply(lambda x: lemmatization(x))
        print(df)

然而,我总是得到这样的错误:

代码语言:javascript
复制
Unable to import module 'lambda_function': No module named 'regex._regex'

我已经导入了nltk和regex包。你能帮我搬一下吗?

EN

回答 2

Stack Overflow用户

发布于 2020-10-23 23:47:01

一种可能的解决方案是,您的操作系统在下载依赖项时使用不同版本的Python (即3.6),而不是您的Lambda函数(即3.7)。我建议尝试下载您的lambda脚本使用的任何版本的Python,然后例如,如果我希望Python的版本是3.8,我将运行以下代码:

pip3.8 install -r requirements.txt -t aws-lib

票数 1
EN

Stack Overflow用户

发布于 2021-02-13 23:14:39

我和你一样面对这个问题。导致此错误的问题是您使用的操作系统和lambda函数使用的不同。当python安装一个包时,它会根据您使用的操作系统创建已安装的文件。因此,当您使用使用linux OS创建的部署包时,它将与lambda函数一起工作。

windows用户有很多方法可以做到这一点,但我建议您使用docker容器来安装您的软件包。

具体步骤如下:

  1. pull python:3.8 docker镜像(这是撰写本答案时lambda支持的最高版本)
  2. 使用装载到容器中的代码作为卷的目录运行您的容器。
  3. 现在位于容器内部,导航到装载的文件夹并使用pip安装所需的软件包。
  4. 从您的容器中取出,现在使用这些已安装的软件包构建您的软件包并将其部署到

lambda<代码>G29上

ps:现在,当你在windows上执行你的代码时,它会给出一个错误,因为安装的包是为linux操作系统构建的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64498145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档