pip의`--no-cache-dir`은 무엇에 좋은가요?


111

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

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

Q3의 롱샷 : RAM을 절약하기 위해?
Ma0

4
이에 대한 문서는 매우 광범위합니다. pip.pypa.io/en/stable/reference/pip_install/#caching
emredjan

2
첫 번째 Google 결과는 사용법에 대한 꽤 좋은 설명을 제공합니다. pip.pypa.io/en/stable/reference/pip_install
mikea

3
도커 이미지를 만들 때 가볍기를 원합니다. 이렇게하면 캐시 된 파일로 이미지가 커지는 것을 방지 할 수 있습니다.
Victor Lamoine

2
@mikea 아이러니하게도, pip no-cache-dir이것은 이제 첫 번째 결과입니다.
hlongmore

답변:


90
  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


설치 파일을 저장해야하는 이유는 무엇입니까?
Martin Thoma

7
계속해서 다운로드하지 않으려면. 모듈을 제거하고 다음에 설치할 때 캐시 된 디렉토리의 파일을 사용한다고 가정합니다.
Stack

7
그래. 따라서 배포에만 사용되는 도커 이미지 (따라서 "수동"작업 없음 ")의 경우를 사용하지 않을 이유가 없습니다 --no-cache-dir. 맞습니까?
Martin Thoma

6
다른 사람이 어떤 패키지를 설치하지 않기 때문에 예 @MartinThoma는 생산 고정 표시기 이미지에, 당신은 핍 --no-캐시 디렉토리를 사용하려면, 저장 공간은 더욱 가치입니다 ...
오즈 Ozturk

2
하하 OP가 " '캐시 됨'이 무엇을 의미합니까?"를 의미하지 않는다고 생각합니다. 질문 1의 경우
Arel 19:09:19

50

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


7
당신은 ENV PIP_NO_CACHE_DIR=1파이썬 3.6.10 이상의 이미지를 위해 docker에서 사용할 수 있습니다
Levon

9

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

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

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


4

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


0

--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작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.