Basic Usage¶
pip2conda translates pip-style requirements into conda requirements by reading or generating metadata for a project, evaluating build and runtime requirements, and translating each requirement into a conda-forge compatible format.
Simple Project Analysis¶
Run pip2conda from the base of your project directory:
pip2conda
Collecting requirements for the current project
$ pip2conda
grayskull>=1.0.0
packaging>=25.0
python-build>=1.0.0
python>=3.11
requests>=2.32.5
ruamel.yaml>=0.18.15
setuptools-scm>=3.4.3
setuptools>=61.0
wheel
wheel>=0.45.1
The tool will analyze your project’s metadata and output the conda-compatible requirements.
Analyzing Wheel Files¶
You can also point pip2conda at a wheel file for any project:
pip2conda path/to/package.whl
Converting requirements.txt¶
To convert an existing requirements.txt file into a conda environment.yml
file, use the -r/--requirements option:
pip2conda -r ./requirements.txt
This will read the requirements from the specified file and output the conda-compatible equivalents.
Working with Dependency Groups¶
pip2conda supports both standard PEP 735
dependency groups and custom pip2conda-specific dependency groups.
Standard Dependency Groups¶
Standard dependency groups are defined in the [dependency-groups] table
of your pyproject.toml:
[dependency-groups]
test = ["pytest", "coverage"]
docs = ["sphinx", "myst-parser"]
You can install specific groups using the -g/--dependency-group option:
pip2conda -g test
pip2conda --dependency-group docs
Or install all groups at once:
pip2conda --all-groups
Custom Dependency Groups¶
For projects that use tools like uv which may fail when dependency groups
contain non-pip-installable packages, you can define custom dependency groups
that are only recognized by pip2conda:
[tool.pip2conda.dependency-groups]
conda = ["my-conda-only-package", "another-conda-package"]
custom-test = ["pytest-conda", "conda-coverage"]
These custom groups work exactly like standard groups:
pip2conda -g conda
pip2conda -g custom-test
Mixing Standard and Custom Groups¶
You can use both standard and custom dependency groups in the same project. Custom groups take precedence when both define the same group name:
[dependency-groups]
test = ["pytest", "coverage"]
[tool.pip2conda.dependency-groups]
test = ["pytest-conda", "conda-coverage"] # This overrides the standard test group
conda = ["my-conda-only-package"]
Groups can also reference each other using include-group:
[dependency-groups]
base = ["requests", "numpy"]
[tool.pip2conda.dependency-groups]
extended = [
{"include-group" = "base"},
"additional-conda-package",
]
Output Formats¶
By default, pip2conda outputs requirements in a simple list format suitable for use with conda. The tool can also generate YAML format output for conda environment files.
Example: YAML output
pip2conda -o requirements.yaml
channels:
- conda-forge
dependencies:
- grayskull>=1.0.0
- packaging>=25.0
- python-build>=1.0.0
- python>=3.11
- requests>=2.32.5
- ruamel.yaml>=0.18.15
- setuptools-scm>=3.4.3
- setuptools>=61.0
- wheel
- wheel>=0.45.1
Command Line Options¶
For a full list of available options, run:
pip2conda --help
Using the rattler backend¶
pip2conda can use py-rattler as an experimental backend for checking whether packages exist in conda-forge.
Warning
The rattler backend is experimental. It should be very fast, but hasn’t been as rigorously tested as the conda backend. Feedback is welcome on GitLab.
Install the optional extra first:
python -m pip install "pip2conda[rattler]"
Then select the backend with -S/--solver:
pip2conda -S rattler
All other options continue to work as usual, including extras, dependency groups, and Python version selection.