Existing Strategies#

There are currently only a handful of patterns that are considered safe when install PyPI packages inside a conda environment. We list these scenarios below:

Only install Python & pip inside conda environments#

In this scenario, users only install Python and pip inside of a clean conda environment. Here, we simply use conda as an environment manager and let pip managed the project dependencies.

This is what that typically looks like:

$ conda create -n pip-environment python=3.10 pip
$ conda activate pip-environment
$ pip install ...

Editable installs#

In this scenario, conda provides all the dependencies of a given package. Then that package is installed on top in editable mode, without addressing dependencies to make sure we don’t accidentally overwrite conda files:

$ git clone git@github.com:owner/package.git
$ conda create -n editable-install package --deps-only
$ conda activate editable-install
$ pip install -e . --no-deps

Package your PyPI dependencies as conda packages#

This is the safest option in terms of ensuring maximum stability, but it is also the most time-consuming. Maintaining a separate conda package can be a cumbersome process and requires continued attention as the newer versions of the pacakge are released.

For those that want to choose this approach, tools like Grayskull exist to make it easier to transform a Python package into a conda package recipe.