A PDM plugin that packs your packages into a zipapp
Project description
pdm-packer
A PDM plugin that packs your packages into a zipapp
Requirements
pdm-packer requires Python >=3.7
Installation
On PDM 1.6.4+, you can install the plugin directly by:
$ pdm plugin add pdm-packer
If you have installed PDM with the recommended tool pipx
, add this plugin by:
$ pipx inject pdm pdm-packer
Or if you have installed PDM with pip install --user pdm
, install with pip
to the user site:
$ python -m pip install --user pdm-packer
Otherwise, install pdm-packer
to the same place where PDM is located.
Usage
$ pdm pack [common-options] [pack-options]
Common Options:
-h, --help
show this help message and exit
-v, --verbose
-v for detailed output and -vv for more detailed
-g, --global
Use the global project, supply the project root with
-p
option
-p PROJECT_PATH, --project PROJECT_PATH
Specify another path as the project root, which changes the base of pyproject.toml and
__pypackages__
Pack Options:
-m MAIN, --main MAIN
Specify the console script entry point for the zipapp
-o OUTPUT, --output OUTPUT
Specify the output filename. By default the file name will be inferred from the project name.
-c, --compress
Compress files with the deflate method, no compress by default
--pyc, --compile
Compile source into pyc files
--no-py
Remove the .py files in favor of .pyc files
-i INTERPRETER, --interpreter INTERPRETER
The Python interpreter path, default: the project interpreter
--exe
Create an executable file. If the output file isn't given, the file name will end with .exe(Windows) or no suffix(Posix)
See also: https://docs.python.org/3.9/library/zipapp.html
Examples
# Create with default name(<project_name>.pyz) and console_script as the __main__.py
pdm pack
# Create an executable file
pdm pack --exe
# Create with custom __main__.py and filename
pdm pack -o app.pyz -m app:main
Caveats
- If the result zipapp contains binaries, it can only be deployed to the platforms with the same abi, any cross-abi usage of that app might expect a failure.
- Any console scripts except for what is given to
--main
will be lost. - The .exe file is different from what is produced by
pyinstaller
in the way that it doesn't embed a Python interpreter. This means you have to install a Python with exactly the same version on the deployment platform. - If you have code to run in your project, the project itself should be installed into
__pypackages__
as well. Make sure you have set a project name inpyproject.toml
.
About executable zipapp
By default, zipapp is created with .pyz
suffix. On Windows, if you have associted .pyz
files with Python program, you can run the app by double-clicking the file in the explorer. But if you create the app with --exe
turn on, you can have a .exe file on Windows and an executable file
on Unix-like systems, so that the app can be executed without a python
command prefixing it and
no matter you assoicated the file exensition properly or not.
Changelog
See CHANGELOG.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pdm_packer-0.8.1.tar.gz
.
File metadata
- Download URL: pdm_packer-0.8.1.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00f9d5b32d120c48c206548392cf4c0f72ae023a57c4517c85e920e6dea87c97 |
|
MD5 | bf00578738c5f19baa680cc3467fad21 |
|
BLAKE2b-256 | cec58b52b58bda9e7b933aa502ea0cad21cdf1ac1362e985699ae66aea442e12 |
File details
Details for the file pdm_packer-0.8.1-py3-none-any.whl
.
File metadata
- Download URL: pdm_packer-0.8.1-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f10af01ddb5cfd82a002f1d54d058595e2f22a9e50180a8985095a3c88d11f0 |
|
MD5 | 9216a4c54d787247af069467b6f815a5 |
|
BLAKE2b-256 | 56a20fc5b0eae355c0ed3799b0cbfd8c665f7ca380e4d0bf256f3d232dc7f7e6 |