Ich versuche, eine AWS-Lambda-Funktion zu erstellen, die ein Python-Skript ausführt, und sie muss Python2.7 verwenden (weil ich es nicht mit Python3 zum Laufen bekomme). Ich versuche, ein Abhängigkeitspaket für mein Skript zusammenzustellen, das „Beautiful Soup“ enthält, aber ich erhalte immer wieder die Fehlermeldung:
ImportError: No module named html.entities
Ich habe die Fehlerquelle gefunden (https://docs.python.org/2.7/library/htmllib.html#module-htmlentitydefs- dieses Modul wurde beim Wechsel von 2 auf 3 umbenannt) und ich habe eine Lösung gefunden, mit der es ohne diesen Fehler auf meinem Computer ausgeführt werden kann. Wenn ich einfach ausführe pip install --upgrade --no-cache-dir beautifulsoup4
, kann ich es ausführen python2.7 master.py
und es funktioniert ohne Fehler. Das Problem tritt jedoch auf, wenn ich versuche, dieses Abhängigkeitspaket zu erstellen. Ich führe es aus pip install --upgrade --no-cache-dir beautifulsoup4 --target .
und die gewünschten Pakete werden im Verzeichnis angezeigt, aber wenn ich das Skript erneut ausführe, tritt derselbe Fehler wie zuvor auf:
/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
Der Unterschied scheint darin zu liegen, dass diesmal die Abhängigkeiten verwendet werden, die in dem Verzeichnis installiert sind, in dem es sich befindet, und nicht die, die sich irgendwo anders auf meinem Computer befinden. Leider sind es die in diesem Verzeichnis, mit denen ich arbeiten muss. Für jede Hilfe wäre ich dankbar.
BEARBEITEN:
Ein paar weitere Informationen. Wenn ich python2.7 -c "import bs4 ; print(bs4.__version__)"
aus dem Verzeichnis, in dem ich die Abhängigkeitspakete abgelegt habe, ausführe (mit dem Befehl --target), erhalte ich
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
und wenn ich den gleichen Befehl aus einem anderen Verzeichnis ausführe (in diesem Fall bin ich gerade hingegangen cd ..
), erhalte ich
4.4.1