使用 --no-cache-dir 和 --target 进行 pip 安装

使用 --no-cache-dir 和 --target 进行 pip 安装

我正在尝试制作一个可以运行 Python 脚本的 AWS lambda 函数,并且它必须使用 Python2.7(因为我无法让它与 Python3 一起工作)。我正在尝试为我的脚本组合一个包含 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

相关内容