開発ドライブ(Dev Drive) #7 pip パッケージ キャッシュ

Microsoft Build 2023で発表があった開発ドライブ (Dev Drive)が使えるようになりました。さっそく、開発ドライブを作成・設定しました。今回は、開発ドライブを作成した後の各種設定について説明します。

開発ドライブ (Dev Drive)とは

開発ドライブ (Dev Drive)の説明、要件、作成方法などは、以前の投稿で説明しましたので、説明は省略します。以前の投稿を参照してください。

開発ドライブの作成後の設定

今回も開発ドライブを作成した後の、開発環境の設定について説明します。

開発ドライブは、レポジトリ(ソースコード)の保存先やパッケージキャッシュの保存先の利用が想定されています。しかし、開発ドライブを作成しただけでは、これらのものが自動的に開発ドライブに移動することはありません。

そのため、開発ドライブを作成した後は、

  • ソースコードを移動
  • ソースコードの置き場所の既定値の設定の変更
  • パッケージキャッシュの保存先の変更

などの作業をする必要があります。

以降は、以下の前提で説明をします。

  • 開発ドライブ作成前の既存のレポジトリの保存先: C:\Repos\
  • 開発ドライブ作成前の既存のパッケージ キャッシュの保存先: それぞれのパッケージキャッシュの既定のフォルダー
  • 作成した開発ドライブのドライブレター: Dドライブ
  • 開発ドライブ上の新たなレポジトリの保存先: D:\Repos\
  • 開発ドライブ上の新たなパッケージ キャッシュの保存先: D:\Packages\
    • D:\Packages\npm-cache\
    • D:\Packages\nuget\
    • D:\Packages\pip-cache\
  • 開発ドライブ上の新たなシンボル キャッシュ フォルダー: D:\SymbolCache\

nuget 以外のパッケージキャッシュフォルダー

C#のプログラム開発では、パッケージマネージャーはnugetです。しかし、他の言語でのプログラム開発であれば他のパッケージマネージャーを使います。node.js では npm 、pythonではpip などを使います。

これらのパッケージマネージャーもローカル ストレージにパッケージ キャッシュを保存します。

そのため、これらのパッケージ キャッシュも、開発ドライブに配置するのが適しています。これらのパッケージ キャッシュ フォルダーも開発ドライブ側に移動します。

python の pip パッケージ キャッシュ フォルダーの設定

python の代用的なパッケージマネージャーである pip も他のパッケージマネージャーと同様にパッケージキャッシュをローカルストレージに配置します。

この pip のパッケージキャッシュを開発ドライブに移設します。開発ドライブ側に作成する pip のパッケージ キャッシュ フォルダーは、D:\Packages\pip-cache\ である前提で説明します。

この投稿の内容を超える詳細については、pip ドキュメントの「pip キャッシュ」と StackOverflow の「Linux で pip キャッシュのディレクトリを変更するには?」を参照してください。

パッケージ キャッシュ フォルダーの既定値

pip のパッケージ キャッシュ フォルダーの既定値は、以下となります。

C:\Users\(username)\AppData\Local\pip\cache\

(username)のところは、ログオンしているユーザーのユーザー名となります。ユーザーごとに変化しないパスで表現すると以下のパスになります。

%LocalAppData%\pip\cache

この既定のパスを、開発ドライブに変更します。

パッケージ キャッシュ フォルダーの設定値

この既定のフォルダーパスを変更する方法には、二つあります。

  • pip の構成設定ファイル(pip.ini ファイル)で設定する
  • 環境変数(PIP_CACHE_DIR)で設定する

後者の方法は、他の pip の構成設定とは異なる場所に設定することになります。その為、pip のすべての設定を確認するときに分かりにくくなります。今回は、他の pip の構成設定と同じ場所に設定するために前者の方法で設定します。

pip の構成設定ファイルに以下のように global セクションに cache-dir の項目を追加することにより、pip パッケージ キャッシュ フォルダーを任意の場所に変更できます。

[global]
cache-dir = D:\packages\pip-cache

環境変数 PIP_CACHE_DIR が設定されていない場合、pip パッケージマネージャーは、pip の構成設定ファイルの cache-dir の値を、以下の場所から順番に読み込みます。

  1. pip の cache-dir の既定値(%LocalAppData%\pip\cache)
  2. グローバル レベルの構成ファイル (%PROGRAMDATA%\pip\pip.ini)の cache-dir の値
  3. ユーザー レベルの旧構成ファイル (%USERPROFILE%\pip\pip.ini)の cache-dir の値
  4. ユーザー レベルの構成ファイル (%APPDATA%\pip\pip.ini)の cache-dir の値
  5. サイト レベルの構成ファイル (%LOCALAPPDATA%\Programs\Python\PythonXX\pip.ini)の cache-dir の値

cache-dir 設定項目が複数の構成設定ファイルにあった場合は、後から読み込んだファイルの設定値が使われます。

今回の場合は、ユーザーのパッケージ キャッシュ フォルダーを変更したいので、ユーザーレベルのファイルを変更するのが適切です。なお、同じPC上の各ユーザーでキャッシュを共有したい場合は、グローバル レベルの構成ファイルを変更します。

パッケージ キャッシュ フォルダーの設定の変更

構成ファイルを直接変更する場合は、ユーザー レベルの構成ファイル %APPDATA%\pip\ (C:\Users\(username)\AppData\Roaming\pip\) にあるpip 構成ファイル(pip.ini)をテキストエディターなど開き(ファイルがない場合は新規作成する)、global セクションにcache-dir=D:/packages/pip-cache を追加します。

[global]
cache-dir = E:\packages\pip-cache

pip CLI (pip.exe) が使える環境であれば、下記のコマンドラインを実行することにより、ユーザー レベルの構成設定に追加できます。

pip config set global.cache-dir "D:/packages/pip-cache"

グローバル レベルで設定する場合には、以下のように --global オプションを追加します。

pip config --global set global.cache-dir "D:/packages/pip-cache"

また、下記のコマンドラインを実行することにより、設定内容の確認ができます。

pip config get global.cache-dir
(グローバル レベルに設定した場合は、pip config --global get global.cache-dir)

既存のパッケージ キャッシュ フォルダーのファイルを移動

パッケージ キャッシュ フォルダーの設定を変更したら、パッケージの再ダウンロードが発生しないように、古いパッケージ キャッシュ フォルダーのファイルを新しいパッケージ キャッシュ フォルダーにコピーします。なお、パッケージの再ダウンロードが発生してもよい場合は、このコピーは不要です。

まずは、既定のパッケージ キャッシュ フォルダーである%LOCALAPPDATA%\pip\cache\ (C:\Users(username)\AppData\Local\pip\cache\) フォルダーを開きます。

このパスを「ファイル名を指定して実行」(Windowsキー + Rキー) や Windowsエクスプローラーのアドレス バーに入力しEnterキーを押下すると、pip パッケージ キャッシュ フォルダーが開きます。

ファイル名を指定して実行に %LOCALAPPDATA%\pip\cache を入力
Windowsエクスプローラーのアドレスバーに %LOCALAPPDATA%\pip\cache を入力

この pip パッケージ キャッシュ フォルダー内のすべてのファイルとフォルダーを開発ドライブのD:\packages\pip-cache\フォルダーにコピーします。

コピーしたパッケージ キャッシュ ファイルの確認

コピーが完了したら、正しくコピーされているか確認するために、pip cache infoコマンドでキャッシュを確認します。

D:\>pip cache info
Location: d:\packages\pip-cache\wheels
Size: 0 bytes
Number of wheels: 0

D:\>

存在するパッケージ キャッシュの量により表示される数値は異なります(この例はwheelsキャッシュがない状態です)。内容に問題がなければ、キャッシュフォルダーの設定変更と既存のキャッシュのコピーは成功しています。

既存のパッケージキャッシュフォルダーの削除

pip パッケージ キャッシュ フォルダーを、既定値のフォルダーパスから開発ドライブのパスに変更した後は、既存のキャッシュフォルダーは利用されることはありません。ストレージを無駄に消費するだけなので、既存のパッケージ キャッシュ フォルダーは削除します。

以上で、pip のパッケージ キャッシュ フォルダーに関する設定の変更は完了です。


今回の投稿では、pip のパッケージ キャッシュ フォルダーを開発ドライブに移設する方法を説明しました。

コメントを残す