Skip to main content

depsize

The depsize package helps you measure the disk space used by your python dependencies. The purpose of this package is to help you understand how much each package contributes to the size of your app, and to help you find ways to reduce the size of the app.

Depsize supports uv and pip, and although it currently cannot parse dependencies for poetry and conda, it can tell you how to do it - and use the results with depsize.

When used in combination with docker image history this tool helps you find ways to reduce the total size of the docker image.

This package has no third party dependencies. The program only uses the built-in packages of python.

Supports python version 3.8 and newer.

Install

Install depsize with your tools of choice, for example

pip

pip install depsize

or add depsize to your requirements-dev.txt file and install it with your other dev requirements using pip install -r requirements-dev.txt.

uv

uv add depsize --dev

Or just copy the main python program as a script. It runs on all versions greater than and including python 3.7.

How to use depsize

You can run the depsize package from within your application repository from the terminal by running

Run depsize to get a description of the tool

> depsize
depsize: Get the total size of installed python dependencies in megabytes (MB).
    Run 'depsize total' to get total size of dependencies, including the largest
    Run 'depsize --o FILE' to export dependencies as JSON,
        f.ex 'depsize --o data/packages.json'
    Add '--from' to 'depsize total' and 'depsize --o' to measure size of main and dev dependencies,
        f.ex 'depsize total --from requirements-main.txt'

Run depsize total to print the size of all packages in MB, and name the largest:

> depsize total
Total size of all packages: 56.27 MB
==================================================
Packages larger than 1 MB:
debugpy: 27.93 MB
zmq: 4.99 MB
jedi: 4.75 MB
pygments: 4.50 MB
IPython: 3.48 MB
prompt_toolkit: 2.24 MB
tornado: 1.76 MB

Packages smaller than 1 MB: 68 packages
Combined size of packages smaller than 1 MB: 6.62 MB

You can also get the total for a specific requirements.txt file:

> depsize total --from requirements/dev.txt
Total size of all packages: 46.36 MB
==================================================
Packages larger than  1MB:
debugpy: 27.93 MB
jedi: 4.75 MB
pygments: 4.50 MB
IPython: 3.48 MB
tornado: 1.76 MB

Packages smaller than 1 MB: 16 packages
Combined size of packages smaller than 1 MB: 3.94 MB

If there are no dependencies, depsize will also show you that:

> depsize total --from requirements/main.txt
No packages found in requirements/main.txt. Is the file empty or does it only contain comments?
Total size of all packages: 0.00 MB
==================================================
Packages larger than  1MB:

Packages smaller than 1 MB: 0 packages
Combined size of packages smaller than 1 MB: 0.00 MB

You can store the results as a json file with depsize --o File, which will contain the python packages by name, package version and size in megabytes.

> depsize --o data/packages.json
Dependencies written to data/packages.json

If you only want to measure results for the main dependencies then you can extract them from a requirements txt file like so:

> depsize --o data/packages.json --from requirements/dev.txt
Dependencies written to data/packages.json

As is the case with depsize total, if the requirements.txt file is empty you will be notified by depsize:

> depsize --o data/packages.json --from requirements/main.txt
No packages found in requirements/main.txt. Is the file empty or does it only contain comments?
Dependencies written to data/packages.json

Example JSON file contents:

[
  {
    "name": "appnope",
    "version": "0.1.4",
    "size_MB": 0.01
  },
  {
    "name": "asttokens",
    "version": "3.0.0",
    "size_MB": 0.02
  },
  {
    "name": "comm",
    "version": "0.2.2",
    "size_MB": 0.03
  },
  {
    "name": "debugpy",
    "version": "1.8.14",
    "size_MB": 0.04
  },
  {
    "name": "decorator",
    "version": "5.2.1",
    "size_MB": 0.02
  },
  {
    "name": "executing",
    "version": "2.2.0",
    "size_MB": 0.16
  },
  {
    "name": "ipykernel",
    "version": "6.29.5",
    "size_MB": 0.0
  },
  {
    "name": "ipython",
    "version": "9.3.0",
    "size_MB": 0.02
  },
  {
    "name": "ipython-pygments-lexers",
    "version": "1.1.1",
    "size_MB": null
  },
  {
    "name": "jedi",
    "version": "0.19.2",
    "size_MB": 0.24
  },
  {
    "name": "jupyter-client",
    "version": "8.6.3",
    "size_MB": null
  },
  {
    "name": "jupyter-core",
    "version": "5.8.1",
    "size_MB": null
  },
  {
    "name": "matplotlib-inline",
    "version": "0.1.7",
    "size_MB": null
  },
  {
    "name": "nest-asyncio",
    "version": "1.6.0",
    "size_MB": null
  },
  {
    "name": "packaging",
    "version": "25.0",
    "size_MB": 0.23
  },
  {
    "name": "parso",
    "version": "0.8.4",
    "size_MB": 0.02
  },
  {
    "name": "pexpect",
    "version": "4.9.0",
    "size_MB": 0.01
  },
  {
    "name": "platformdirs",
    "version": "4.3.8",
    "size_MB": 0.01
  },
  {
    "name": "prompt-toolkit",
    "version": "3.0.51",
    "size_MB": null
  },
  {
    "name": "psutil",
    "version": "7.0.0",
    "size_MB": 0.03
  },
  {
    "name": "ptyprocess",
    "version": "0.7.0",
    "size_MB": 0.0
  },
  {
    "name": "pure-eval",
    "version": "0.2.3",
    "size_MB": null
  },
  {
    "name": "pygments",
    "version": "2.19.1",
    "size_MB": 0.04
  },
  {
    "name": "python-dateutil",
    "version": "2.9.0.post0",
    "size_MB": null
  },
  {
    "name": "pyzmq",
    "version": "26.4.0",
    "size_MB": 0.04
  },
  {
    "name": "ruff",
    "version": "0.11.12",
    "size_MB": 0.0
  },
  {
    "name": "six",
    "version": "1.17.0",
    "size_MB": 0.03
  },
  {
    "name": "stack-data",
    "version": "0.6.3",
    "size_MB": null
  },
  {
    "name": "tornado",
    "version": "6.5.1",
    "size_MB": 1.78
  },
  {
    "name": "traitlets",
    "version": "5.14.3",
    "size_MB": 0.01
  },
  {
    "name": "wcwidth",
    "version": "0.2.13",
    "size_MB": 0.51
  }
]

Developing locally

just install # to install dependencies for depsize
just build # to build depsize
just edit-install # to install an editable build

Metadata

Release files for depsize 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for depsize 0.2.0
File Size Uploaded
depsize-0.2.0.tar.gz 48.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for depsize 0.2.0
File Interpreter ABI Platform
depsize-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 56.3 kB

Release files / depsize-0.2.0.tar.gz

Download URL depsize-0.2.0.tar.gz
Size 48.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8e8b1b826e55e6502766c4ada1e4e973045d27f2f979458a9847a1ea74bd3fea
BLAKE2b-256 checksum
How to use checksums
0f14c8a644193dba03741866c5e8cc00d7fcdcf2d0836618b5443f24e463f27b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / depsize-0.2.0-py3-none-any.whl

Download URL depsize-0.2.0-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
351075dd87bb5e169bbb4131823ddf37f64c7350efc8e2f200e193bff1cc8b33
BLAKE2b-256 checksum
How to use checksums
d0123b52e5a8e554c4279dcb5ef39b8e6432f823c674b440c9c81f5feb5ce6e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page