> ## Documentation Index
> Fetch the complete documentation index at: https://bakefile.wisl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> bakefile is a Python task runner with two CLIs: bake runs tasks from bakefile.py, bakefile manages the project. It is not a service or platform.
> Tasks are methods on Bakebook classes in bakefile.py, decorated with @command. Subprocesses run through self.ctx.run().
> Examples are backed by tests; copy them verbatim.

# ImportError at startup from a dependency

> bake or bakefile crashes with an ImportError before doing anything, usually after a dependency released a breaking change. Upgrade bakefile, or reinstall with the locked extra.

`bake` and `bakefile` can crash at startup when a floating dependency releases a breaking change and the old bakefile version still imports the moved name:

```
ImportError: cannot import name 'Abort' from 'typer._click.exceptions'
```

This exact error hit bakefile up to 0.0.76 when typer 0.27.2 moved its private modules.

## Fix

Upgrade to the latest bakefile:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
uv tool install --upgrade bakefile
# or
pipx upgrade bakefile
```

If you need to stay on the old version, reinstall it together with the dependency version that worked before:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
uv tool install bakefile "typer<0.27.2"
```

## Prevent it

From 0.0.77 on, install with the `locked` extra to get exact, tested versions of every dependency instead of floating ranges:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
uv tool install "bakefile[locked]"
```

See [Install bakefile](/getting-started/installation) for all install forms.
