Awesome
pdm-wheel
A PDM plugin that save your requirements as wheels, similar to pip wheel
Use cases
- You want to build wheels for your dependencies, but don't want to use
pdm export
andpip wheel
. - You need to pass the wheels to a CI/CD pipeline, and don't want to build them on the CI/CD server.
- You want to install dependencies in a Docker image, but don't want to configure private repositories in the image.
Supported versions
- Python 3.10+
- PDM 2.7.4+ (not 2.13.0 and 2.13.1)
We recommend you use the patch versions of Python and PDM.
Installation
Install it just like any other PDM plugin:
pdm self add pdm-wheel
If you have installed PDM with the recommended tool pipx
, add this plugin by:
pipx inject pdm pdm-wheel
Or if you have installed PDM with pip install --user pdm
, install with pip
to the user site:
python -m pip install --user pdm-wheel
Optionally, you can also specify the plugin in your project pyproject.toml
, to make it installable with pdm install --plugins
:
[tool.pdm]
plugins = [
"pdm-wheel"
]
Usage
pdm wheel [common-options] [dependencies-selection-options] [wheel-options]
💡 Check the options for your version of pdm wheel
with:
pdm wheel --help
Wheel Options:
-w OUTPUT, --wheel-dir OUTPUT
Specify the output directory. It will be created it it does not exists. Default is the current directory
./wheels
Environment variable:PDM_WHEEL_DIR
--clean
Clean the target directory before building.
--no-clean
Do not clean the target directory before building. This is the default behavior.
Notes on lockfiles
PDM 2.8+ now saves the lockfiles with only hashes and no URL by default.
There is currently a performance overhead, as some internals expect the URL to be present, else they will try to reach the indexes to get it.
Thus, I recommend you use pdm lock --static-urls
to have faster pdm wheel
operations.
Read more about this in PDM's documentation.
Examples
# Save all dependencies (including dev deps) as wheels in the ./wheels folder
pdm wheel -w wheels
# Save all dev dependencies as wheels in the ./wheels folder
pdm wheel -w wheels --dev
# Save all non-dev dependencies as wheels in the ./wheels folder
pdm wheel -w wheels --prod
Caveats
pdm-wheel
does not check whether the wheels are already built.
Changelog
See Github Releases
Acknowledgements
pdm-wheel
is inspired by pip wheel
.
pdm-wheel
's structure is based on frostming's pdm-packer