私は、Python スクリプトを実行する AWS Lambda 関数を作成しようとしていますが、Python 2.7 を使用する必要があります (Python 3 では動作しないため)。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