Development Status
- 3 - Alpha
Intended Audience
- Developers
Programming Language
- Python :: 3.10
- Python :: 3.11
- Python :: 3.12
- Python :: 3.13
- Python :: 3.14
Topic
- Software Development :: Build Tools
whl2conda
Generate conda packages directly from pure python wheels
whl2conda is a command line utility to build and test conda packages generated directly from pure python wheels.
-
Performance: because it does not need to create conda environments in order to build, this is much faster than solutions involving conda-build.
-
Dependency renaming: renames pypi package dependencies to their corresponding conda name. Automatically renames packages from known list collected from conda-forge and supports user-specified rename patterns as well.
-
Multiple package formats: can generate both V1 ('.tar.bz2') and V2 ('.conda') conda package formats. Can also generate a unpacked directory tree for debugging or additional user customization.
-
Project configuration: whl2conda project-specific options can be read from project's
pyproject.tomlfile. -
Test install support: supports installing conda package into a conda environment for testing prior to deployment.
-
Hides pypi dependencies: rewrites the original pip/pypi dependencies in the installed dist-info to avoid compatibility issues.
-
Experimental binary support: can convert non-pure Python wheels containing binary extensions (
.so,.pyd) into platform-specific conda packages using the--allow-impureflag. Automatically generates tight Python version pins and OS constraints from wheel platform tags.Limitations: Binary conversion works best for simple C extension packages (e.g., markupsafe, wrapt, ujson) where the wheel is self-contained. It will refuse to convert packages known to bundle complex runtime libraries (PyTorch, TensorFlow, CUDA packages, etc.) or wheels with local version suffixes (e.g.,
+cu121). For complex GPU/CUDA packages, use conda-forge packages instead.
Installation
With pip:
pip install whl2conda
With conda (upcoming):
conda install -c conda-forge whl2conda
Quick usage
Generate a conda package in same directory as wheel file:
whl2conda convert dist/mypackage-1.2.3-py3-none-any.whl
Add default tool options to pyproject.toml
whl2conda config --generate-pyproject pyproject.toml
Build both wheel and conda package for project:
whl2conda convert --build-wheel my-project-root
Create python 3.10 test environment for generated conda package:
whl2conda install dist/mypackage-1.2.3.-py_0.conda --create -n testenv \
--extra pytest python=3.10