没有名为“email.FeedParser”的模块
Posted
技术标签:
【中文标题】没有名为“email.FeedParser”的模块【英文标题】:No module named 'email.FeedParser' 【发布时间】:2019-06-28 08:10:57 【问题描述】:我正在尝试在 AWS Lambda 上运行代码,但它返回错误:“无法导入模块 'main':没有名为 'email.FeedParser' 的模块”。
我的代码没有使用电子邮件 feedparser 模块或函数。它只需连接到一个 Google API 并下载 CSV 报告。
我检查了我的代码范围,这个模块的引用是由 httplib2 库和 python 标准库的 email/parser.py 完成的。
requirements.txt 文件中的所有必需库都已完全更新。该代码还由 samTemplate.yaml 文件配置为在 aws 的 python 3.7 环境中执行。
你们以前遇到过这个问题吗?我该如何解决?
谢谢!
import httplib2
from googleapiclient import discovery
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import run_flow
from urllib.parse import urlencode
import requests
import json
import time as t
import pandas as pd
from datetime import datetime, timedelta
from calendar import monthrange
from dateutil.relativedelta import relativedelta
【问题讨论】:
你有没有机会在本地使用python2?您是如何创建上传到 Lambda 的部署包(.zip 存档)的? httplib2 的 py3 版本中没有email.FeedParser
,但它的 py2 版本中有一个(请参阅 github.com/httplib2/httplib2/…)我认为这是问题的原因 - 您正在将 py2 兼容代码上传到 py3 容器。跨度>
您好米兰,非常感谢您的回答。我不在我的项目中使用 python2。这个项目有一个python 3.7.1的虚拟环境。我已经检查过,httplib2 上有一个“import email.feedparser”行。同样在 python 标准库(在 email/parser.py 中)它被称为“从 email.feedparser 导入 FeedParser”。
您在错误消息中提到了email.FeedParser
(注意 CamelCase 名称)。这将建议 py2 版本的 httplib。那么错误信息是否正确?
是的!错误消息是:。我不知道为什么 AWS 会调用 httplib2 的 py2 版本。在这一点上您完全正确,但是 AWS 可以在 Python 2.7 和 Python 3.6/3.7 中执行它。 requirements.txt 文件包含所有这些库的最新版本。
只是为了确保 - 您的 Lambda 配置为使用 py 3.6/3.7 而不是 2.7,对吗?
【参考方案1】:
我必须确保 pip3 实际安装到 python3 而不是 python2。 而不是:
pip3 install <package>
我必须这样做:
python3.8 -m pip install <package>
在此处查看答案:Why pip3 install in python2 sitepackages
【讨论】:
【参考方案2】:我也遇到了同样的问题……
我这样做了:
vim ~/.pydistutils.cfg
[安装]
前缀=
请参阅此处:24257803 了解有关此步骤的更多信息
rm -rf [dependencies_dir]
pip3 install -r requirements.txt --target [dependencies_dir]
Pip3 会将此依赖项安装到 Python3,而 pip 将安装到 Python2(其中一些包不存在)。因此,当通过无服务器部署到 Lambda 时,不包含这些包。
【讨论】:
非常感谢分享,我去试试!以上是关于没有名为“email.FeedParser”的模块的主要内容,如果未能解决你的问题,请参考以下文章
macOS 上的“ModuleNotFoundError:没有名为 'dbus' 的模块”
ModuleNotFoundError:没有名为“推理”的模块
为啥 ImportError:没有名为 lightgbm 的模块