Closed
Description
Bug description
I'm trying testing 5.0.0rc2 while currently using version 4.1.2. We utilize the official Docker image and install dependencies as the superset user in the Dockerfile as shown below.
USER root
RUN apt update && apt install -y python3-dev default-libmysqlclient-dev build-essential pkg-config
USER superset
RUN pip install --no-cache-dir mysqlclient
My Docker image works with version 4.1.2, but running a DB upgrade on 5.0.0rc2 throws the following error.
2025-04-22 10:55:45,212:ERROR:superset.app:Failed to create app
Traceback (most recent call last):
File "/app/.venv/lib/python3.10/site-packages/superset/app.py", line 40, in create_app
app_initializer.init_app()
File "/app/.venv/lib/python3.10/site-packages/superset/initialization/__init__.py", line 465, in init_app
self.setup_db()
File "/app/.venv/lib/python3.10/site-packages/superset/initialization/__init__.py", line 661, in setup_db
pessimistic_connection_handling(db.engine)
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 998, in engine
return self.get_engine()
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 1017, in get_engine
return connector.get_engine()
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 594, in get_engine
self._engine = rv = self._sa.create_engine(sa_url, options)
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 1027, in create_engine
return sqlalchemy.create_engine(sa_url, **engine_opts)
File "<string>", line 2, in create_engine
File "/app/.venv/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py", line 375, in warned
return fn(*args, **kwargs)
File "/app/.venv/lib/python3.10/site-packages/sqlalchemy/engine/create.py", line 544, in create_engine
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/app/.venv/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 150, in dbapi
return __import__("MySQLdb")
ModuleNotFoundError: No module named 'MySQLdb'
Traceback (most recent call last):
File "/app/.venv/bin/superset", line 10, in <module>
sys.exit(superset())
File "/app/.venv/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "/app/.venv/lib/python3.10/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/app/.venv/lib/python3.10/site-packages/click/core.py", line 1685, in invoke
super().invoke(ctx)
File "/app/.venv/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/app/.venv/lib/python3.10/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/app/.venv/lib/python3.10/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
File "/app/.venv/lib/python3.10/site-packages/flask/cli.py", line 355, in decorator
app = __ctx.ensure_object(ScriptInfo).load_app()
File "/app/.venv/lib/python3.10/site-packages/flask/cli.py", line 309, in load_app
app = locate_app(import_name, name)
File "/app/.venv/lib/python3.10/site-packages/flask/cli.py", line 238, in locate_app
return find_app_by_string(module, app_name)
File "/app/.venv/lib/python3.10/site-packages/flask/cli.py", line 166, in find_app_by_string
app = attr(*args, **kwargs)
File "/app/.venv/lib/python3.10/site-packages/superset/app.py", line 40, in create_app
app_initializer.init_app()
File "/app/.venv/lib/python3.10/site-packages/superset/initialization/__init__.py", line 465, in init_app
self.setup_db()
File "/app/.venv/lib/python3.10/site-packages/superset/initialization/__init__.py", line 661, in setup_db
pessimistic_connection_handling(db.engine)
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 998, in engine
return self.get_engine()
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 1017, in get_engine
return connector.get_engine()
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 594, in get_engine
self._engine = rv = self._sa.create_engine(sa_url, options)
File "/app/.venv/lib/python3.10/site-packages/flask_sqlalchemy/__init__.py", line 1027, in create_engine
return sqlalchemy.create_engine(sa_url, **engine_opts)
File "<string>", line 2, in create_engine
File "/app/.venv/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py", line 375, in warned
return fn(*args, **kwargs)
File "/app/.venv/lib/python3.10/site-packages/sqlalchemy/engine/create.py", line 544, in create_engine
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/app/.venv/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 150, in dbapi
return __import__("MySQLdb")
ModuleNotFoundError: No module named 'MySQLdb'
Although mysqlclient seem installed with pip freeze
, the superset user cannot access it.
I noticed the repository now uses uv. When I tried installing it via uv, a permission error occurred. Installing it as the root user resolved the issue.
@mistercrunch, I was advised to tag you since you migrated the image to uv.
Screenshots/recordings
No response
Superset version
master / latest-dev
Python version
3.10
Node version
16
Browser
Chrome
Additional context
No response
Checklist
- I have searched Superset docs and Slack and didn't find a solution to my problem.
- I have searched the GitHub issue tracker and didn't find a similar bug report.
- I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.