Estou tentando fazer uma função AWS lambda que executará um script python e terá que usar python2.7 (porque não consigo fazê-la funcionar com python3). Estou tentando montar um pacote de dependência para meu script que inclua uma bela sopa, mas continuo recebendo a mensagem de erro:
ImportError: No module named html.entities
Encontrei a origem do erro (https://docs.python.org/2.7/library/htmllib.html#module-htmlentitydefs- este módulo foi renomeado na mudança de 2 para 3) e encontrei uma solução que fará com que ele rode sem esse erro no meu computador. Se eu apenas executar pip install --upgrade --no-cache-dir beautifulsoup4
, posso executar python2.7 master.py
e funcionar sem erros. Mas o problema surge quando tento criar este pacote de dependência. Eu executo pip install --upgrade --no-cache-dir beautifulsoup4 --target .
e os pacotes que desejo aparecem no diretório, mas quando executo o script novamente, ocorre o mesmo erro de antes:
/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
Parece que a diferença é que desta vez ele está usando as dependências instaladas no diretório em que está, e não aquelas em outro lugar da minha máquina e, infelizmente, são as que estão neste diretório que preciso poder trabalhar. Qualquer ajuda seria apreciada.
EDITAR:
Um pouco mais de informação. Quando executo python2.7 -c "import bs4 ; print(bs4.__version__)"
a partir do diretório onde coloquei os pacotes de dependência (com o comando --target), recebo
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
e quando executo o mesmo comando em um diretório diferente (acabei de acessar cd ..
neste caso), recebo
4.4.1