Skip to content

Error when running a uv backend session with active conda environment #801

@jayqi

Description

@jayqi

Current Behavior

If you have a conda environment active and try to run a session with using uv as a backend and session.install, uv throws an error because it detects both an active conda environment and an active virtual environment:

nox > Command uv pip install ruff failed with exit code 2:
error: Both VIRTUAL_ENV and CONDA_PREFIX are set. Please unset one of them.

Expected Behavior

nox should clear both VIRTUAL_ENV and CONDA_PREFIX environment variables before trying to run a session.

(I am mixing conda environments and virtual environments for a project because my project needs graphviz, which is nice to install with conda. My dev environment is using conda. However, I don't need it for all environments like linting, so it would be nice to be able to use uv for fast sessions.)

Steps To Reproduce

# noxfile.py
import nox


@nox.session(venv_backend="uv")
def lint(session):
    session.install("ruff")
# No conda environment active, no problem
❯ nox -s lint
nox > Running session lint
nox > Creating virtual environment (uv) using python in .nox/lint
nox > uv pip install ruff
nox > Session lint was successful.

# Activate a conda environment, try to run
❯ mamba create -n my-conda-env -y
...redacted for brevity...
❯ mamba activate my-conda-env
❯ nox -s lint
nox > Running session lint
nox > Creating virtual environment (uv) using python in .nox/lint
nox > uv pip install ruff
nox > Command uv pip install ruff failed with exit code 2:
error: Both VIRTUAL_ENV and CONDA_PREFIX are set. Please unset one of them.
nox > Session lint failed.

Environment

- OS: macOS
- Python: 3.12.1
- Nox: 2024.3.2

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions