inveniosoftware / invenio-cli

CLI module for Invenio
https://invenio-cli.readthedocs.io
MIT License
10 stars 43 forks source link

`invenio-cli install` fails with exception in `flask_sqlalchemy` #285

Open sphuber opened 2 years ago

sphuber commented 2 years ago

Describe the bug

I tried installing InvenioRDM following the quick start documentation. Initially I tried the containerized version by running invenio-cli containers start --lock --build --setup, which failed with the exception below. In an attempt to localize the problem I tried the local version instead and realized that the problem lies with installing the Python dependencies. When running invenio-cli install, the command exits with the following exception:

ubuntu@invenio:~/nccr-catalysis$ invenio-cli install
Installing python dependencies... Please be patient, this operation might take some time...
Creating a virtualenv for this project...
Pipfile: /home/ubuntu/nccr-catalysis/Pipfile
Using /home/ubuntu/.virtualenvs/invenio/bin/python3.8 (3.8.10) to create virtualenv...
⠏ Creating virtual environment...created virtual environment CPython3.8.10.final.0-64 in 1186ms
  creator CPython3Posix(dest=/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/ubuntu/.local/share/virtualenv)
    added seed packages: pip==21.3.1, setuptools==60.2.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

βœ” Successfully created virtual environment! 
Virtualenv location: /home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs
Installing dependencies from Pipfile.lock (c18a03)...
  🐍   β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰β–‰ 222/222 β€” 00:04:02
All dependencies are now up-to-date!
Updating instance path...
Failed to install dependencies.
Errors: Traceback (most recent call last):
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/bin/invenio", line 5, in <module>
    from invenio_app.cli import cli
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_app/cli.py", line 13, in <module>
    from .factory import create_app
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_app/factory.py", line 99, in <module>
    app_class=app_class(),
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_app/factory.py", line 76, in app_class
    from invenio_files_rest.app import Flask as FlaskBase
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_files_rest/__init__.py", line 972, in <module>
    from .ext import InvenioFilesREST
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_files_rest/ext.py", line 16, in <module>
    from .cli import files as files_cmd
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_files_rest/cli.py", line 15, in <module>
    from invenio_db import db
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_db/__init__.py", line 93, in <module>
    from .ext import InvenioDB
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_db/ext.py", line 23, in <module>
    from .cli import db as db_cmd
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_db/cli.py", line 23, in <module>
    from .utils import create_alembic_version_table, drop_alembic_version_table
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_db/utils.py", line 16, in <module>
    from .shared import db
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/invenio_db/shared.py", line 104, in <module>
    db = SQLAlchemy(metadata=metadata)
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 714, in __init__
    self.session = self.create_scoped_session(session_options)
  File "/home/ubuntu/.virtualenvs/nccr-catalysis-W5926JBs/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 747, in create_scoped_session
    scopefunc = options.pop('scopefunc', _app_ctx_stack.__ident_func__)
AttributeError: 'LocalStack' object has no attribute '__ident_func__'

Steps to Reproduce

  1. Install InvenioRDM v8.0 on Ubuntu 20.04 with Python 3.8.10
  2. Run invenio-cli install

Expected behavior

invenio-cli install correctly installs all Python dependencies

Additional context

OS: Ubuntu 20.04.4 LTS Python: 3.8.10 InvenioRDM: v8.0

sphuber commented 2 years ago

Might have been fixed by https://github.com/inveniosoftware/invenio-base/pull/165