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