Estoy intentando crear una función lambda de AWS que ejecute un script de Python y tiene que usar python2.7 (porque no puedo hacer que funcione con python3). Estoy intentando crear un paquete de dependencia para mi script que incluya una sopa hermosa, pero sigo recibiendo el mensaje de error:
ImportError: No module named html.entities
Encontré la fuente del error (https://docs.python.org/2.7/library/htmllib.html#module-htmlentitydefs- se cambió el nombre de este módulo en el cambio de 2 a 3) y encontré una solución que hará que se ejecute sin este error en mi computadora. Si simplemente ejecuto pip install --upgrade --no-cache-dir beautifulsoup4
, puedo ejecutarlo python2.7 master.py
y funciona sin errores. Pero el problema surge cuando intento crear este paquete de dependencia. Lo ejecuto pip install --upgrade --no-cache-dir beautifulsoup4 --target .
y los paquetes que quiero aparecen en el directorio, pero luego, cuando ejecuto el script nuevamente, aparece el mismo error que 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 la diferencia es que esta vez está usando las dependencias instaladas en el directorio en el que se encuentra en lugar de las que se encuentran en otro lugar de mi máquina y, desafortunadamente, son las de este directorio con las que necesito poder trabajar. Cualquier ayuda sería apreciada.
EDITAR:
Un poco más de información. Cuando ejecuto python2.7 -c "import bs4 ; print(bs4.__version__)"
desde el directorio donde puse los paquetes de dependencia (con el comando --target) obtengo
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
y cuando ejecuto el mismo comando desde un directorio diferente (al que acabo de ir cd ..
en este caso) aparece
4.4.1