After five days or so, I've decided the best solution to my own particular problem is to abandon Jupyter Book and run my app with Quarto (https://quarto.org/). I don't know if my problems stemmed from trying to run Jupyter Book in a virtual environment, the transition to Jupyter Book 2.0, or a combination of the two, but in the end the time it was taking me to figure things out was making the project less and less worthwhile. Quarto seems a more mature setup and it's better suited to my needs right now.
Best of luck to the Jupyter Book team in the further development of their product, and many thanks to everyone who took the time to answer my questions.