Skip to main content

paketoi

Paketoi is a command-line tool for building AWS Lambda deployment packages (zip files) for Python projects.

The goal is to provide a single command to build the deployment package for simple projects using requirements.txt.

Assumptions

  • The dependencies for your project are specified in a requirements.txt file.
  • Any dependencies with native code have pre-built binary wheels for the target platform.

Installation

Paketoi is available on PyPI. The simplest way to install it globally is to use pipx:

pipx install paketoi

Usage

The tool is meant to be run in the directory that contains your project. The source code is assumed to reside in the working directory. The basic usage is:

paketoi -r <path to requirements.txt> <path to output file>

You can find all the command-line options with paketoi --help.

Command-line options

% paketoi --help
Usage: paketoi [OPTIONS] OUTPUT

  Build AWS Lambda deployment packages (zip files) for Python projects.

Options:
  -s, --source DIRECTORY          The source root of the project.
  -I, --include PATH              Files to be included, relative to the source
                                  root.
  -E, --exclude TEXT              Files to be excluded, relative to the source
                                  root.
  -r, --requirement TEXT          Path to requirements.txt.
  --runtime [3.9|3.10|3.11|3.12|3.13]
                                  Python version to target.
  --platform [x86_64|arm64]       Architecture to target.
  --default-excludes / --no-default-excludes
                                  Enable/disable the default exclusion list.
                                  (.git, .jj, .mypy_cache, .ruff_cache)
  --help                          Show this message and exit.

Python version and architecture

By default, dependencies are downloaded for Python 3.13 running on x86_64. You can change these options with --platform and --runtime options.

For example, to build a deployment package for Python 3.10 running on arm64, do this:

paketoi -r requirements.txt --runtime 3.10 --platform arm64 lambda.zip

Simple layout

.
├── lambda_function.py
└── requirements.txt

With the project layout like above, you can build a deployment package lambda.zip like this:

paketoi -r requirements.txt lambda.zip

src layout

.
├── requirements.txt
└── src
   └── lambda_function.py

When your lambda source is under the directory src, use -s src to set the source root.

paketoi -r requirements.txt -s src lambda.zip

Excluding files

.
├── requirements.txt
├── lambda_function.py
└── tests
   └── lambda_function_test.py

You can exclude files you do not need by using -E path. For example:

paketoi -r requirements.txt -E tests lambda.zip

Alternatives

Developing paketoi

This project uses Poetry as the package manager and just as the command runner. Project setup:

# Create a virtualenv and install all the dependencies
poetry install

# Run all the tests and checks
just check

# We use snapshot tests pytest-snapshot. If they need updating, run this:
just test-update

# Run the tool directly from the repo
poetry run paketoi

Metadata

Release files for paketoi 0.1.3

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

Source distribution (sdist)

Source distribution for paketoi 0.1.3
File Size Uploaded
paketoi-0.1.3.tar.gz 23.3 kB Details

Built distribution (wheel)

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

Total release size: 49.8 kB

Release files / paketoi-0.1.3.tar.gz

Download URL paketoi-0.1.3.tar.gz
Size 23.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5c65bc825919e579ecfd4140e89a4b65c9831269338aa73191e6b03ebf500f5d
BLAKE2b-256 checksum
How to use checksums
57f8d47e91045fe51f1303979aa679769bfe41ffe0a13f2ca0a2343c12964f3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.13.7 Darwin/24.6.0

Release files / paketoi-0.1.3-py3-none-any.whl

Download URL paketoi-0.1.3-py3-none-any.whl
Size 26.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
777b2a47fd9c6e587bed3d5a5ff0bb659c2295375531e47fa8079c527ad334d7
BLAKE2b-256 checksum
How to use checksums
9e5613a934523888b378dad08e0756420fc195e0e60037916fcc0c89b5dab1f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.13.7 Darwin/24.6.0

Release history Release notifications | RSS feed

This release

0.1.3 This release

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