Migrated issue, originally created by Abhilash Raj ()
load_module_py and load_module_pyc for Python 3.5 in alembic.utils don't initialize the module properly before executing them.
This bug was found in latest release of alembic when using ` inenv.py` :
Traceback (most recent call last):
File "/home/maxking/.virtualenvs/py3/bin/alembic", line 11, in <module>
load_entry_point('alembic', 'console_scripts', 'alembic')()
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/config.py", line 479, in main
CommandLine(prog=prog).main(argv=argv)
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/config.py", line 473, in main
self.run_cmd(cfg, options)
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/config.py", line 456, in run_cmd
**dict((k, getattr(options, k, None)) for k in kwarg)
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/command.py", line 465, in current
script.run_env()
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/script/base.py", line 425, in run_env
util.load_python_file(self.dir, 'env.py')
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/util/pyfiles.py", line 81, in load_python_file
module = load_module_py(module_id, path)
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/alembic/util/compat.py", line 84, in load_module_py
spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "/home/maxking/Documents/mm3/core/src/mailman/database/alembic/env.py", line 38, in <module>
File "/home/maxking/.virtualenvs/py3/lib/python3.6/site-packages/atpublic-1.0-py3.6.egg/public/public.py", line 15, in public
KeyError: 'env_py'
</module></frozen></frozen></module>
Looks like load_module_py doesn't add the module to sys.modules which causes the error. The old load_module API did this automatically.
I am not sure if module_from_spec should take care of this (i.e. it is a bug in stdlib) or it should be addressed in alembic.
该提问来源于开源项目:sqlalchemy/alembic