Quick start#

Installation#

conda-pypi is a conda plugin that needs to be installed next to conda in the base environment:

conda install -n base conda-pypi

Once installed, the conda pypi subcommand becomes available across all your conda environments.

Basic usage#

conda-pypi provides several Features. The main functionality is accessed through the conda pypi command:

Installing PyPI packages#

Assuming you have an activated conda environment named my-python-env that includes python and pip installed, and a configured conda channel, you can use conda pypi install like this:

conda pypi install niquests

This will download and convert niquests from PyPI to .conda format (since it was explicitly requested), but install its dependencies from the conda channel when available. For example, if niquests depends on urllib3 and certifi, and both are available on the conda channel, those dependencies will be installed from conda rather than PyPI.

conda pypi install build

This will download and convert the build package from PyPI to .conda format. Even though python-build exists on conda, the explicitly requested package always comes from PyPI to ensure you get exactly what you asked for. However, its dependencies will preferentially come from conda channels when available.

conda pypi install some-package-with-many-deps

Here’s where the hybrid approach really shines: some-package-with-many-deps itself will be converted from PyPI, but conda-pypi will analyze its dependency tree and:

  • Install dependencies like numpy, pandas, etc. from the conda channel (if available)

  • Convert only the dependencies that aren’t available on conda channels from PyPI

conda pypi install --override-channels some-package

This forces dependency resolution to use only PyPI, bypassing conda channel checks for dependencies. The requested package is always converted from PyPI regardless of this flag.

Converting packages without installing#

You can also convert PyPI packages to .conda format without installing them:

# Convert to current directory
conda pypi convert niquests rope

# Convert to specific directory
conda pypi convert -d ./my_packages niquests rope

This is useful for creating conda packages from PyPI distributions or preparing packages for offline installation.

Development and editable installations#

conda-pypi supports editable installations for development workflows:

# Install local project in editable mode
conda pypi install -e ./my-project/

# Install from version control in editable mode
conda pypi install -e git+https://github.com/user/project.git

# Preview what would be installed
conda pypi install --dry-run niquests pandas

Environment protection#

conda-pypi ships a special file called EXTERNALLY-MANAGED that helps protect your conda environments from accidental pip usage that could break their integrity. This file is automatically installed in the base environment, all new environments, and existing environments that after running a conda pypi command on them.

More details about this protection mechanism can be found at Environment marker files.