If not using the run.ipynb file to run the app the import for dash needs to be changed from JupyterDash to dash.Dash in app.py.
The .py files were created from .ipynb using the extension "Jupytext". Some Jupyter header information is retained in the files.