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
Dockerイメージを構築しているときは、明るくしたいです。これにより、キャッシュされたファイルで画像が肥大化するのを防ぐことができます。
Victor Lamoine

2
@mikea皮肉なことにpip no-cache-dir、これは今、最初の結果です。
hlongmore 2018年

回答:


89
  1. Cached is:隠して保管するか、将来の使用のために
  2. のために使用される
  • .whlpipを使用してインストールするモジュールのインストールファイル(など)を保存します
  • ソースファイル(.tar.gzなど)を保存して、期限切れでない場合に再ダウンロードしないようにする
  1. キャッシュを無効にしたい場合の考えられる理由
  • ハードドライブに空き容量がない
  • 以前pip install予期ない設定で 実行した
    • 例えば:
      • 以前に実行しexport PYCURL_SSL_LIBRARY=nsspip 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
何度もダウンロードしないようにするため。モジュールをアンインストールし、次回のインストール時に、キャッシュされたディレクトリのファイルを使用するとします
スタック

7
あ、そう。したがって、展開のみに使用されるDockerイメージ(したがって「手動」アクションがない)の場合--no-cache-dir、使用しない理由はありません、正しいですか?
Martin Thoma

6
はい、@ MartinThoma、本番用のDockerイメージでは、pip --no-cache-dirを使用します。これは、他の誰もパッケージをインストールせず、ストレージスペースがさらに価値があるためです...
Ozgur Ozturk

2
OPは「キャッシュされた」とはどういう意味ですか?質問1の場合
19:09のArel

50

--no-cache-dirDockerイメージをビルドするときに使用するのには十分な理由があると思います。Dockerイメージでは通常キャッシュは役に立たないため、キャッシュを無効にすることでイメージサイズを確実に縮小できます。


7
ENV PIP_NO_CACHE_DIR=1Python 3.6.10以降の画像のdockerで使用できます
Levon

9

pipキャッシュを無効にするもう1つの理由-まだ存在しないユーザーとしてpipを実行すると、そのホームディレクトリは作成されますが、rootが所有します。

これは、Amazon AMIをchrootで構築するときに発生します。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.