Я пытаюсь создать функцию AWS lambda, которая будет запускать скрипт python, и она должна использовать python2.7 (потому что я не могу заставить ее работать с python3). Я пытаюсь собрать пакет зависимостей для моего скрипта, который включает в себя прекрасный суп, но я постоянно сталкиваюсь с сообщением об ошибке:
ImportError: No module named html.entities
Я нашел источник ошибки (https://docs.python.org/2.7/library/htmllib.html#module-htmlentitydefs- этот модуль был переименован в switch с 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