I’ve built a multi-tab Dash app, with code split into multiple files, which works fine with the debug server but breaks under gunicorn. Specifically, all of the callbacks defined anywhere but the first Python file are inert. I can add a button and callback in the index file and it works, regardless of whether it’s in the tab area or not. All buttons and tabs work normally when run from the Dash development server. There are no errors in the console; the Devtools network view shows normal function for buttons defined in index.py and no activity at all for other buttons. Testing with waitress produced the same outcome, of callbacks from other files not working.
I would appreciate any tips on what coding practice I missed, or the best way to restructure files if this is a permanent difference between coding layout allowable on debug vs production. Full code at Github project; the version on master works fine in debug and the version on gunicorn branch runs—with the problem described above—in gunicorn or waitress with the entry point index:server.