--no-cache-dir 및 --target을 사용하여 pip 설치

--no-cache-dir 및 --target을 사용하여 pip 설치

Python 스크립트를 실행할 AWS 람다 함수를 만들려고 하는데 python2.7을 사용해야 합니다(python3에서는 작동하도록 할 수 없기 때문입니다). 아름다운 수프가 포함된 스크립트용 종속성 패키지를 구성하려고 하는데 계속 오류 메시지가 표시됩니다.

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

관련 정보