태그 보관물: pip

pip

pip의`–no-cache-dir`은 무엇에 좋은가요? . 나는 전에 그 깃발을

최근 --no-cache-dir에 Docker 파일에서 사용되는 것을 보았습니다 . 나는 전에 그 깃발을 본 적이 없으며 도움이 그것을 설명하지 않습니다.

 --no-cache-dir              Disable the cache.
  1. 질문 : 무엇이 캐시됩니까?
  2. 질문 : 캐시는 무엇에 사용됩니까?
  3. 질문 : 왜 비활성화해야합니까?


답변

  1. 캐시 된 상태 : 은신처에 저장하거나 나중에 사용할 수 있도록 저장
  2. 사용
  • .whlpip를 통해 설치하는 모듈 의 설치 파일 ( 등)을 저장합니다.
  • .tar.gz만료되지 않은 경우 다시 다운로드하지 않도록 소스 파일 ( 등)을 저장합니다.
  1. 캐시를 비활성화하려는 가능한 이유 :
  • 당신은 당신의 하드 드라이브에 공간이 없습니다
  • 이전 pip install예기치 않은 설정으로
    실행
    • 예 :
      • 이전에 실행 export PYCURL_SSL_LIBRARY=nss하고pip install pycurl
      • 새로운 실행을 원 export PYCURL_SSL_LIBRARY=openssl하고pip install pycurl --compile --no-cache-dir
  • Docker 이미지를 가능한 한 작게 유지하고 싶습니다.

문서 링크

https://pip.pypa.io/en/stable/reference/pip_install/#caching – @emredjan
https://pip.pypa.io/en/stable/reference/pip_install/ – @mikea


답변

--no-cache-dirDocker 이미지를 빌드 할 때 사용하는 좋은 이유가 있다고 생각 합니다. Docker 이미지에서 캐시는 일반적으로 쓸모가 없으며 캐시를 비활성화하여 이미지 크기를 확실히 줄일 수 있습니다.


답변

pip 캐시를 비활성화하는 또 다른 이유-아직 존재하지 않는 사용자로 pip를 실행하면 홈 디렉토리가 생성되지만 루트가 소유합니다.

이는 chroot에서 Amazon AMI를 빌드 할 때 발생합니다. pip는 빌더 머신에 존재하는 사용자로 실행되지만 AMI가 생성되는 chroot jail에서는 실행되지 않습니다. ssh 디렉토리를 읽을 수 없기 때문에 특정 사용자가 방금 빌드 된 항목으로 ssh 할 수 없기 때문에 문제가됩니다.

pip가 존재하지 않는 사용자로 실행되는 다른 이유는 생각할 수 없으므로 매우 엣지 케이스입니다.


답변

비공개 레지스트리 / 아티 팩토리 또는 배포 서비스에 크기 제한이있을 수 있으므로 DockerFile에 Python 종속성이있는 경우 Docker 이미지 크기를 줄입니다.


답변

--no-cache-dir옵션을 사용하지 않으면 일부 pip 패키지 설치에 대한 권한 오류가 발생합니다 .

Building wheels for collected packages: pyyaml, bottleneck, nvidia-ml-py3
  WARNING: Building wheel for pyyaml failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/b1'
  WARNING: Building wheel for bottleneck failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/92'
  WARNING: Building wheel for nvidia-ml-py3 failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/7f'

chown /.cache폴더는 어떤 이유로 도움이되지 않았지만 정상적으로 --no-cache-dir작동합니다.


답변