It has nothing to do with linux, it’s how you run your application that make the difference. We use flask.helpers.get_root_path
which take a module name to resolves the path to the module. By default, we have __main__
as the module name for a fallback that will work when the app is called by it’s module name (eg: python app.py
).
When you run it thru some other command line (like the flask command or gunicorn/waitress) the __main__
module is no longer located where app.py
is and now refer to some place like /venv/lib/site-packages/flask
. Giving __name__
explicitly will always give the right path to the assets folder.