Python wheel to debian package converter
Project description
wheel2deb
wheel2deb
is a python wheel to debian package converter. It takes a list of wheels as input and produces a list of debian binary CPython packages (those prefixed with python- or python3-).
Quick Example
The following shows how to convert numpy and pytest, along with their dependencies into a list of debian packages:
# Download (and build if needed) pytest, numpy and their requirements
pip3 wheel pytest numpy
# Convert all wheels to debian source packages
wheel2deb --map attrs=attr
# Call dpkg-buildpackages for each source package
wheel2deb build
ls -l output/*.deb
# Install generated packages
dpkg -i output/*.deb
# Run pytest on numpy
python3 -c "import numpy; numpy.test()"
Project scope
- Python 2.7 and 3
- CPython only for now
- support for non pure python wheels
- support debian architectures all, armhf, amd64, i686
- tested on jessie, stretch, buster so far, ubuntu should also work
Requirements
wheel2deb
uses apt-cache
to search for debian packages, dpkg-shlibdeps
to calculate shared library dependencies and apt-file
to search packages providing shared library dependencies. wheel2deb build
requires the usual tools to build a debian package:
apt update
apt install apt-file dpkg-dev fakeroot build-essential devscripts debhelper
apt-file update
If you want to cross build packages for ARM, you will also need to install binutils-arm-linux-gnueabihf
.
Converting pure python wheels, don't actually requires apt-file and dpkg-dev.
Keep in mind that you should only convert wheels that have been built for your distribution and architecture. wheel2deb will not warn you about ABI compatibility issues.
Installation
From the release page
wheel2deb
is packaged as a single binary application that you can download from the release page. Using those releases will spare you the hassle of building Python 3.10 on old Debian based distributions.
With wakemeops
sudo apt-get install wheel2deb
With docker
We currently do not build docker images with wheel2deb
pre-installed. You can use wakemeops docker images to quickly play with wheel2deb
on a different distribution than your host.
docker run -ti wakemeops/debian:buster
And in the container run:
install_packages wheel2deb
With pipx
wheel2deb
is available from pypi:
pipx install wheel2deb
Features
- guess debian package names from wheel names and search for them in the cache
- search packages providing shared library dependencies for wheels with native code
- handle entrypoints and scripts (those will be installed in /usr/bin with a proper shebang)
- try to locate licence files and to generate a debian/copyright file
Options
Use wheel2deb --help
and wheel2deb build --help
to check all supported options
Option | Description |
---|---|
-v | Enable debug logs. |
-x | List of search paths where to look for python wheels. Defaults to current directory. Not recursive. |
-o | Output directory where debian source packages will be produced. Defaults to ./output |
-i | List of wheel names to convert. By default all found wheels are included. |
--python-version | cpython version on the target debian distribution. Defaults to platform version (example: 3.4). |
--map | list of string pairs to explicitely map python dist names to debian package names. For instance: "--map foo:bar attrs:attr" will tell wheel2deb to map foo to python-bar and attrs to python-attr. |
--depends | List of additional debian dependencies. |
--epoch | Debian package epoch. Defaults to 0. |
--revision | Debian package revision. Defaults to 1. |
--ignore-entry-points | Don't include the wheel entrypoints in the debian package. |
--ignore-upstream-version | Ignore version specifiers from wheel requirements. For instance, if foo requires bar>=3.0.0, using this option will produce a debian package simply depending on bar instead of "bar (>= 3.0.0)". |
Development
You will need poetry, and probably pyenv if you don't have python 3.10 on your host.
poetry install
To run wheel2deb test suite run:
poetry run task check
To build a python wheel:
poetry run poetry build
Bugs/Requests
Please use the GitHub issue tracker to submit bugs or request features.
License
Copyright Parkoview SA 2019-2023.
Distributed under the terms of the MIT license, wheel2deb is free and open source software.
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
Hashes for wheel2deb-0.7.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec1771dd93d35e63fb09ee5cd35095e8b1d011e7b2bf39c82a365f6b29e6f4fc |
|
MD5 | 9fd1b31acccaee51862141898583386a |
|
BLAKE2b-256 | d040ace6895bddd3fd5f2693d1e3829e71d9d32244d3cc5318681721e200dd7d |