Metadata-Version: 2.4
Name: depzip
Version: 0.5
Summary: A small library for zipping Python application dependencies
Author: Pavel Demin
License-Expression: MIT
Project-URL: Homepage, https://github.com/pavel-demin/depzip
Requires-Python: <3.14,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: dllist
Dynamic: license-file

The `depzip` library can be used for zipping dependencies of Python applications.

This library uses the [dllist](https://github.com/wardbrian/dllist) library to discover DLLs loaded by dependencies.

## Installation

This library can be installed using `pip`:
```
python -m pip install depzip
```

## Usage

Here is a Python script showing how to use `depzip` to copy the dependencies of a Python application using `matplotlib`, `numpy`, and `PySide6` into a file called `bundle.zip`:
```
import depzip

depzip.bundle(
    applications=[
        "app",
        "pyside6-uic",
    ],
    modules=[
        "app",
        "PySide6.QtUiTools",
    ],
    includes=[
        "Lib\\site-packages\\matplotlib\\mpl-data",
        "Lib\\site-packages\\numpy.libs",
        "Lib\\site-packages\\pyside6-uic",
        "Lib\\site-packages\\PySide6\\plugins\\platforms\\qwindows.dll",
        "Lib\\site-packages\\PySide6\\plugins\\styles\\qmodernwindowsstyle.dll",
        "Lib\\site-packages\\PySide6\\uic.exe",
    ],
    excludes=[
        "python.exe",
        "pythonw.exe",
    ],
    output="bundle.zip",
)
```

The source code of this script can be found in [examples/bundle.py](https://github.com/pavel-demin/depzip/tree/main/examples/bundle.py).

The provided executable file `run.exe` can be used to run a Python application. It initializes Python and runs a module with the same name as the executable file. For example, to run a Python module named `app`, the executable file `run.exe` should be renamed to `app.exe`.

The source code of the executable file `run.exe` can be found in [examples/run.c](https://github.com/pavel-demin/depzip/tree/main/examples/run.c).

The `applications` parameter is a list of application names that is used to automatically copy `run.exe` to executable files with names in this list.

The `modules` parameter is a list of Python modules used by the applications. These modules are copied to the output file along with all their dependencies.

The `includes` parameter is a list of additional files and directories to be copied to the output file.

The `excludes` parameter is a list of files that should not be copied to the output file.

The `output` parameter is the name of the output file.
