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.10
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

Write output in YAML format
pip2conda -o requirements.yaml
requirements.yaml
channels:
- conda-forge
dependencies:
- grayskull>=1.0.0
- packaging>=25.0
- python-build>=1.0.0
- python>=3.10
- 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