--no-cache-dir と --target を指定して pip install を実行します。

--no-cache-dir と --target を指定して pip install を実行します。

私は、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

関連情報