Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ModuleNotFoundError in flask fab create-app with python 3.12 #2131

Open
ZeeD opened this issue Oct 12, 2023 · 3 comments
Open

ModuleNotFoundError in flask fab create-app with python 3.12 #2131

ZeeD opened this issue Oct 12, 2023 · 3 comments

Comments

@ZeeD
Copy link

ZeeD commented Oct 12, 2023

According to pep 632 python 3.12 doesn't ship distutils anymore.
But distutils is still used in flask fab create-app.

Environment

python: 3.12
Flask-Appbuilder version: 4.3.7

Describe the expected results

flask fab create-app works as described in the documentation

Describe the actual results

flask fab create-app yields an error:

Traceback (most recent call last):
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/bin/flask", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/flask/cli.py", line 1064, in main
    cli.main()
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/click/core.py", line 1682, in invoke
    cmd_name, cmd, args = self.resolve_command(ctx, args)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/click/core.py", line 1729, in resolve_command
    cmd = self.get_command(ctx, cmd_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/flask/cli.py", line 566, in get_command
    self._load_plugin_commands()
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/flask/cli.py", line 561, in _load_plugin_commands
    self.add_command(ep.load(), ep.name)
                     ^^^^^^^^^
  File "/usr/local/Cellar/[email protected]/3.12.0/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/metadata/__init__.py", line 205, in load
    module = import_module(match.group('module'))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/[email protected]/3.12.0/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1304, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 994, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/flask_appbuilder/__init__.py", line 5, in <module>
    from .api import ModelRestApi  # noqa: F401
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/flask_appbuilder/api/__init__.py", line 29, in <module>
    from marshmallow_sqlalchemy.fields import Related, RelatedList
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/marshmallow_sqlalchemy/__init__.py", line 1, in <module>
    from .schema import (
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/marshmallow_sqlalchemy/schema.py", line 6, in <module>
    from .convert import ModelConverter
  File "/Users/a206719281/eclipse-workspace/ocellus-ui-backend-src/.venv/lib/python3.12/site-packages/marshmallow_sqlalchemy/convert.py", line 4, in <module>
    from distutils.version import LooseVersion
ModuleNotFoundError: No module named 'distutils'

Steps to reproduce

$ python3.12 -m venv .venv
$ . .venv/bin/activate
(.venv) $ python -mpip install flask-appbuilder
(.venv) $ flask fab create-app
@dpgaspar
Copy link
Owner

Good to know, some work as to be done to add 3.10, 3.11 and 3.12 to CI and remove distutils.

@ZeeD
Copy link
Author

ZeeD commented Oct 12, 2023

FWIW as a workaround I've just added setuptools as a dependency in my project

@dpgaspar
Copy link
Owner

Looks like this change: https://github.com/marshmallow-code/marshmallow-sqlalchemy/pull/435/files
removed distutils dependency

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants