I think that in general, packaging Python applications is not a well-supported scenario. The packaging ecosystem is mostly focused on packaging libraries. Yes, entry points allow your library to expose a command interface, but the packaging capabilities are still designed around libraries.
There are plenty of options for packaging a Python application up, but there’s no really consistent story (and no good guides that I can find).
I would definitely support efforts to improve application packaging - that would likely involve looking at tools like pyInstaller, cx_Freeze, etc, as well as getting a better idea of the constraints/requirements involved in optional application features such as you describe.
But that’s a longer-term thing, and not directly of help for you right now…