我正在尝试制作一个可以运行 Python 脚本的 AWS lambda 函数,并且它必须使用 Python2.7(因为我无法让它与 Python3 一起工作)。我正在尝试为我的脚本组合一个包含 beautiful soup 的依赖包,但我一直遇到错误消息:
ImportError: No module named html.entities
我找到了错误的根源(https://docs.python.org/2.7/library/htmllib.html#module-htmlentitydefs- 此模块在从 2 到 3 的切换中被重命名)并且我找到了一个解决方案,可以让它在我的计算机上运行时不会出现此错误。 如果我只是运行pip install --upgrade --no-cache-dir beautifulsoup4
,那么我就可以运行python2.7 master.py
并且它可以正常工作而不会出现错误。 但是当我尝试创建这个依赖包时出现了问题。 我运行pip install --upgrade --no-cache-dir beautifulsoup4 --target .
并且我想要的包显示在目录中,但是当我再次运行脚本时,它会得到与以前相同的错误:
/home/user/.../tempStorage/bs4/element.py:16: UserWarning: The soupsieve package is not installed. CSS selectors cannot be used.
'The soupsieve package is not installed. CSS selectors cannot be used.'
Traceback (most recent call last):
File "master.py", line 10, in <module>
from bs4 import BeautifulSoup
File "/home/user/.../tempStorage/bs4/__init__.py", line 34, in <module>
from .builder import builder_registry, ParserRejectedMarkup
File "/home/user/.../tempStorage/bs4/builder/__init__.py", line 7, in <module>
from bs4.element import (
File "/home/user/.../tempStorage/bs4/element.py", line 19, in <module>
from bs4.dammit import EntitySubstitution
File "/home/user/.../tempStorage/bs4/dammit.py", line 13, in <module>
from html.entities import codepoint2name
ImportError: No module named html.entities
似乎不同之处在于,这次它使用的是安装到其所在目录的依赖项,而不是我机器上其他地方的依赖项,不幸的是,我需要能够使用此目录中的依赖项。如能得到任何帮助,我将不胜感激。
编辑:
更多信息。当我python2.7 -c "import bs4 ; print(bs4.__version__)"
从放置依赖包的目录运行时(使用 --target 命令),我得到了
bs4/element.py:16: UserWarning: The soupsieve package is not installed. CSS selectors cannot be used.
'The soupsieve package is not installed. CSS selectors cannot be used.'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "bs4/__init__.py", line 34, in <module>
from .builder import builder_registry, ParserRejectedMarkup
File "bs4/builder/__init__.py", line 7, in <module>
from bs4.element import (
File "bs4/element.py", line 19, in <module>
from bs4.dammit import EntitySubstitution
File "bs4/dammit.py", line 13, in <module>
from html.entities import codepoint2name
ImportError: No module named html.entities
当我从不同的目录运行相同的命令时(在本例中我刚进入这个cd ..
目录),我得到了
4.4.1