TIL: pip install -e doesn't update script entry points

Published June 21, 2025

Today I did some work on Render Engine. Specifically I moved the CLI tool into its own repository and ported it to use Click instead of Typer. Part of this work was too make sure the new repository had the proper instructions for new contributors to get started. And this is where I learned something.

Obviously one of the dependencies for the CLI tool is the engine. You can't do much with the CLI tool without it. The engine has the current implementation of the CLI and we can't remove it until the new one is up on PyPI and ready to be distributed. Installing the engine, even if you don't install the CLI dependencies, installs the entry point so you can run render-engine from the command line. This means that under normal circumstances the engine's entry point would be created and then the CLI installation would overwrite it with its own.

In writing the documentation for the new repository I wanted to double check the instructions I was giving. So I checked out the repository, ran uv sync, activated the venv, and ran pip install -e . expecting everything to work. I was in for a surprise. I tried running a command and got an error - Module typer not found. As you might imagine I was very confused since I had just ripped Typer out. I spent about half an hour trying to figure out what was going on before it dawned on me that I needed to run pip install . to create the correct entry point script and only then could I set it to be editable.

While I think this was a somewhat unique scenario, moving a CLI part of a project to be standalone, I can see other scenarios where this might come up. Especially if the location that the entry point is pointing to changes. And that is something that is much more likely to occur.


Previous: Using generators for functions that get called a lot is not a bad idea. Next: Packaging rust for Python.