villebro opened a new pull request #15444:
URL: https://github.com/apache/superset/pull/15444
### SUMMARY
A recent PR #15405 replaced the use of the deprecated `imp.load_source` with
`importlib.load_module`, which caused the following error on some deployments:
```
Failed to import config for
SUPERSET_CONFIG_PATH=/Users/ville/superset/superset_config.py
Traceback (most recent call last):
File "/Users/ville/src/superset/superset/app.py", line 80, in
load_override_config
override_conf = importlib.import_module("superset_config", cfg_path)
File
"/Users/ville/.pyenv/versions/3.8-dev/lib/python3.8/importlib/__init__.py",
line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'superset_config'
Failed to create app
Traceback (most recent call last):
File "/Users/ville/src/superset/superset/app.py", line 40, in create_app
config = init_config()
File "/Users/ville/src/superset/superset/app.py", line 56, in init_config
override_conf = convert_to_dict(load_override_config())
File "/Users/ville/src/superset/superset/app.py", line 80, in
load_override_config
override_conf = importlib.import_module("superset_config", cfg_path)
File
"/Users/ville/.pyenv/versions/3.8-dev/lib/python3.8/importlib/__init__.py",
line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'superset_config'
Traceback (most recent call last):
File "/Users/ville/src/superset/venv/bin/superset", line 11, in <module>
load_entry_point('apache-superset', 'console_scripts', 'superset')()
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/click/core.py",
line 829, in __call__
return self.main(*args, **kwargs)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/flask/cli.py", line
586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/click/core.py",
line 782, in main
rv = self.invoke(ctx)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/click/core.py",
line 1256, in invoke
Command.invoke(self, ctx)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/click/core.py",
line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/click/core.py",
line 610, in invoke
return callback(*args, **kwargs)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/click/decorators.py",
line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/flask/cli.py", line
425, in decorator
with __ctx.ensure_object(ScriptInfo).load_app().app_context():
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/flask/cli.py", line
381, in load_app
app = call_factory(self, self.create_app)
File
"/Users/ville/src/superset/venv/lib/python3.8/site-packages/flask/cli.py", line
119, in call_factory
return app_factory()
File "/Users/ville/src/superset/superset/app.py", line 51, in create_app
raise ex
File "/Users/ville/src/superset/superset/app.py", line 40, in create_app
config = init_config()
File "/Users/ville/src/superset/superset/app.py", line 56, in init_config
override_conf = convert_to_dict(load_override_config())
File "/Users/ville/src/superset/superset/app.py", line 80, in
load_override_config
override_conf = importlib.import_module("superset_config", cfg_path)
File
"/Users/ville/.pyenv/versions/3.8-dev/lib/python3.8/importlib/__init__.py",
line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'superset_config'
```
A similar change was done on Airflow last year:
https://github.com/apache/airflow/pull/7099 , which is based on the official
documentation found here:
https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly
. Since we don't need to register the module name (we only need the config
dict), this PR proposes to just return the module instead of also registering
the module name as proposed in the documentation.
### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
<!--- Skip this if not applicable -->
### TESTING INSTRUCTIONS
<!--- Required! What steps can be taken to manually verify the changes? -->
### ADDITIONAL INFORMATION
<!--- Check any relevant boxes with "x" -->
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
- [ ] Has associated issue:
- [ ] Changes UI
- [ ] Includes DB Migration (follow approval process in
[SIP-59](https://github.com/apache/superset/issues/13351))
- [ ] Migration is atomic, supports rollback & is backwards-compatible
- [ ] Confirm DB migration upgrade and downgrade tested
- [ ] Runtime estimates and downtime expectations provided
- [ ] Introduces new feature or API
- [ ] Removes existing feature or API
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]