Combining Conda with Poetry for Environment and Package Management (in Windows)

Recently, I was working in a (Python) project that was completely set up using Poetry. Up to now, I hadn’t had the opportunity (or the need) to try it out, so this seemed like a good learning opportunity.

Except for a few caveats1, Poetry has been very simple and straightforward to use. However, it still has some disadvantages compared to conda (my go-to solution for environment and package management), namely:

  1. Poetry only supports Python projects. Sure, I work mostly with Python, but what will happen when I need to use or combine a different framework?
  2. Poetry relies on venv for virtual environments, which has given me a lot of headaches in the past (and one of the main reasons why I switched to conda).

But what if you could combine the best of both worlds? For instance: creating an environment with conda and letting Poetry do all the Python package management? That sounds great!

I was looking for a step-by-step guide of how to configure them for Windows. Although I found one or two, I still needed to do some tinkering myself. In this post, I would like to share how I configured conda and Poetry to work together. Hopefully this will save you some time and makes things smoother, should you decide to have this setup yourself.

0. Install conda

I assume that you have already installed conda in your machine (which comes with pip). By the way, this setup also works for miniforge, which is what I actually use.

1. Install pipx

In your conda terminal, install pipx on your base environment (I know, I know, usually you shouldn’t mess up with your base environment, but this is how I managed to make things work):

pip install pipx

2. Install Poetry

Poetry provides a few installation options. To narrow it down, do the following.

While still being in your base environment, do:

pipx install poetry

Note that as Poetry’s documentation states, do not install Poetry in the environment of your project!

After that, you will (probably) get a warning message regarding paths. Save yourself the issue of changing this manually, and just do:

pipx ensurepath

You can check if Poetry was installed correctly by going to a Windows shell and doing:

poetry --version

3. Configure Poetry

Now you just need to configure Poetry. On a Windows shell, do:

poetry config virtualenvs.path "path_to_your_conda_envs"

Replace path_to_your_conda_envs with the actual Windows path where conda stores your environments (don’t forget the quotation marks " "). If you don’t know said path (as it is always the case with me), you can find out with the command conda info --envs.

Then, type:

poetry config virtualenvs.create false

which allows to keep the environment management up to you (and conda), therefore using Poetry only for package (and dependency) management.

4. Make sure everything works

Lastly, let’s see that everything is working. Close the previous conda terminal, open a new one and do:

poetry --version

You can now use Poetry for installing new packages, for instance:

poetry add mkdocs-git-revision-date-localized-plugin

(It is a weirdly specific example, but that’s the package that I needed at the moment).

That’s it! So far, this configuration has worked quite good for me. Apparently, there are other options that also look very promising, such as using Pixi (as suggested here) or uv (which claims to be extremely fast). I hope I have the chance to take a look at them in the future.


If you have any comments, questions or feedback, leave them in the comments below or drop me a line on Twitter (@amoncadatorres). Moreover, if you found this useful, fun, or just want to show your appreciation, you can always buy me a cookie. Cheers!