@daikikatsuragawa

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

特定のライブラリをインストールした時に使用される容量を知る術を教えてください(依存ライブラリも含む)

解決したいこと

Pythonにおいて、題の通り、特定のライブラリをインストールした時に使用される容量を知る術を教えてください。この時、その特定のライブラリに加えてインストールされる依存ライブラリも併せて知りたいです。

例)

以下のようにscikit-learnをインストールした時に、ローカル環境に対してどれだけの容量が使用されたのかを知りたいです。

scikit-learnをインストール
pip install scikit-learn

特に以下2点を知る術を得たいです。

  • 環境に関わらず使用される絶対的な容量(既に依存ライブラリがインストール済みだった場合、その依存ライブラリの容量も含む)
  • 特定の環境(既に依存ライブラリがインストール済み)で特定のライブラリをインストールした時の容量(差分)

※実行(検証)環境はGoogleColaboratoryを想定しています。

以上、よろしくお願いします。

0 likes

1Answer

※GoogleColaboratoryの環境がなく、wsl上で試した内容を書いています。そのため、以下で使っているようなシェルスクリプトのコマンド(sedやawk)はGoogleColaboratoryで使えないかもしれません。その場合はスルーしてください

・環境に関わらず使用される絶対的な容量(既に依存ライブラリがインストール済みだった場合、その依存ライブラリの容量も含む)
・特定の環境(既に依存ライブラリがインストール済み)で特定のライブラリをインストールした時の容量(差分)

私の環境にscikit-learnが入っていないので、Djangoのパッケージをインストールした場合を例として挙げますが、それぞれ

  • Django単体の容量
  • Django + 依存ライブラリの容量

が知りたいという想定で書かせていただいてます。

  • Django単体の容量

以下の形でpip showを使ってパッケージのLocationNameを取得し、その容量を測定すればできると思います。

$ pip show Django | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null
45M     /home/maru/work/20220106_Django/boardproject/venv/lib/python3.8/site-packages/django
  • Django + 依存ライブラリの容量

依存ライブラリはpip showRequiresで調べられるので、

$ pip show Django
Name: Django
Version: 4.0.3
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Home-page: https://www.djangoproject.com/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD-3-Clause
Location: /home/maru/work/20220106_Django/boardproject/venv/lib/python3.8/site-packages
Requires: sqlparse, asgiref, backports.zoneinfo
Required-by:

それを一つずつ容量測定すればできそうです。
ただ、完全に力技なので、ライブラリが多い場合などはスクリプトを作って自動化できるようにした方が良いと思います。

$ pip show sqlparse | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null
344K    /home/maru/work/20220106_Django/boardproject/venv/lib/python3.8/site-packages/sqlparse
1Like

Comments

  1. @marumen ありがとうございます!!
    Google Colabでも同様に確認できました!

    ```sh
    !pip install Django
    !pip show Django | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null
    ```

    ```sh
    44M /usr/local/lib/python3.7/dist-packages/django
    ```

    依存ライブラリについてもありがとうございます。
    ただ汎用的に確認したいということもあり、スクリプトが必要そうですね。
    また、
    - 依存ライブラリの依存ライブラリ(以下略)の存在
    - 依存ライブラリの依存ライブラリが共通している
    といったものも考慮する必要があり、スクリプトについても注意が必要かと感じました。

Your answer might help someone💌