How to install FeedbackXBlock?

I install FeedbackXBlock from git .
but error

tutor_local-lms-1            | Traceback (most recent call last):
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
tutor_local-lms-1            |     response = get_response(request)
tutor_local-lms-1            |                ^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
tutor_local-lms-1            |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
tutor_local-lms-1            |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/opt/pyenv/versions/3.11.8/lib/python3.11/contextlib.py", line 81, in inner
tutor_local-lms-1            |     return func(*args, **kwds)
tutor_local-lms-1            |            ^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/django/utils/decorators.py", line 134, in _wrapper_view
tutor_local-lms-1            |     response = view_func(request, *args, **kwargs)
tutor_local-lms-1            |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/django/views/decorators/cache.py", line 40, in _cache_controlled
tutor_local-lms-1            |     response = viewfunc(request, *args, **kw)
tutor_local-lms-1            |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/edx-platform/lms/djangoapps/instructor/views/instructor_dashboard.py", line 274, in instructor_dashboard_2
tutor_local-lms-1            |     context, instructor_template = InstructorDashboardRenderStarted.run_filter(
tutor_local-lms-1            |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/openedx_filters/learning/filters.py", line 744, in run_filter
tutor_local-lms-1            |     data = super().run_pipeline(context=context, template_name=template_name)
tutor_local-lms-1            |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/openedx_filters/tooling.py", line 206, in run_pipeline
tutor_local-lms-1            |     steps = cls.get_steps_for_pipeline(pipeline, fail_silently)
tutor_local-lms-1            |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/openedx_filters/tooling.py", line 60, in get_steps_for_pipeline
tutor_local-lms-1            |     function = import_string(step_path)
tutor_local-lms-1            |                ^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/django/utils/module_loading.py", line 30, in import_string
tutor_local-lms-1            |     return cached_import(module_path, class_name)
tutor_local-lms-1            |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/openedx/venv/lib/python3.11/site-packages/django/utils/module_loading.py", line 15, in cached_import
tutor_local-lms-1            |     module = import_module(module_path)
tutor_local-lms-1            |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "/opt/pyenv/versions/3.11.8/lib/python3.11/importlib/__init__.py", line 126, in import_module
tutor_local-lms-1            |     return _bootstrap._gcd_import(name[level:], package, level)
tutor_local-lms-1            |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
tutor_local-lms-1            |   File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
tutor_local-lms-1            | ModuleNotFoundError: No module named 'feedback'

How to fix it.

@choltha could you please provide more detail? What version of Tutor are you running? How are you trying to install the block? What version are you installing? What documentation are you following?

@sarina Thank you for your reply.
I not sure install Block.
How to check Block and install Block?


tutor, version 19.0.2
feedback_xblock-2.1.0

I install FeedbackXBlock by

get clone https://github.com/openedx/FeedbackXBlock.git
cd FeedbackXBlock
pip install -e .
cd "$(tutor plugins printroot)"
vim feedback-xblock-settings.yml 

add

name: feedback-xblock-settings
version: 0.1.0
patches:
  openedx-common-settings: |
    FEATURES["ENABLE_FEEDBACK_INSTRUCTOR_VIEW"] = True
    OPEN_EDX_FILTERS_CONFIG = {
      "org.openedx.learning.instructor.dashboard.render.started.v1": {
        "fail_silently": False,
        "pipeline": [
          "feedback.extensions.filters.AddFeedbackTab",
        ]
      },
    }
tutor plugins enable feedback-xblock-settings
tutor config save

/instructor error

There has been a 500 error page

Please wait a few seconds and then reload the page.

It seems you forgot to check out the correct Git branch; by default, it will be the master branch. Based on the error you shared, it indicates that the feedback package was not installed successfully. Additionally, instead of creating or installing using plugins, you can use mounting. For more details, refer to the documentation, which includes steps to mount edx-ora2

I have a similar issue, although the error is different: when navigating to the instructor tab, the following error occurs:

Model class openedx.core.djangoapps.content.search.models.SearchAccess doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

I proposed this solution: fix: enable content.search app to support Feedback tab in Instructor Dashboard by luisfelipec95 · Pull Request #36727 · openedx/edx-platform · GitHub

Thank you for your reply. @felipe.castano
I fix by add 'openedx.core.djangoapps.content.search', to location file lms/envs/common.py INSTALLED_APPS = []

fix: enable content.search app to support Feedback tab in Instructor Dashboard by luisfelipec95 · Pull Request #36727 · openedx/edx-platform · GitHub
but error duplicates: search

tutor_local-cms-worker-1   | 2025-05-20 06:48:01,336 ERROR 1 [celery.utils.dispatch.signal] [user None] [ip None] signal.py:280 - Signal handler <bound method DjangoFixup.on_import_modules of <celery.fixups.django.DjangoFixup object at 0x7f45172c7e90>> raised: ImproperlyConfigured("Application labels aren't unique, duplicates: search")
tutor_local-cms-worker-1   | Traceback (most recent call last):
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/utils/dispatch/signal.py", line 276, in send
tutor_local-cms-worker-1   |     response = receiver(signal=self, sender=sender, **named)
tutor_local-cms-worker-1   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 100, in on_import_modules
tutor_local-cms-worker-1   |     self.worker_fixup.validate_models()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 138, in validate_models
tutor_local-cms-worker-1   |     self.django_setup()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 134, in django_setup
tutor_local-cms-worker-1   |     django.setup()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/django/__init__.py", line 24, in setup
tutor_local-cms-worker-1   |     apps.populate(settings.INSTALLED_APPS)
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/django/apps/registry.py", line 93, in populate
tutor_local-cms-worker-1   |     raise ImproperlyConfigured(
tutor_local-cms-worker-1   | django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: search
tutor_local-cms-worker-1   | 2025-05-20 06:48:01,338 ERROR 1 [celery.utils.dispatch.signal] [user None] [ip None] signal.py:280 - Signal handler <promise@0x7f4516c05bd0 --> <bound method Celery._autodiscover_tasks of <Celery proj at 0x7f45172b6210>>> raised: AppRegistryNotReady("Apps aren't loaded yet.")
tutor_local-cms-worker-1   | Traceback (most recent call last):
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/utils/dispatch/signal.py", line 276, in send
tutor_local-cms-worker-1   |     response = receiver(signal=self, sender=sender, **named)
tutor_local-cms-worker-1   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/vine/promises.py", line 161, in __call__
tutor_local-cms-worker-1   |     return self.throw()
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/vine/promises.py", line 158, in __call__
tutor_local-cms-worker-1   |     retval = fun(*final_args, **final_kwargs)
tutor_local-cms-worker-1   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/app/base.py", line 694, in _autodiscover_tasks
tutor_local-cms-worker-1   |     return self._autodiscover_tasks_from_fixups(related_name)
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/app/base.py", line 703, in _autodiscover_tasks_from_fixups
tutor_local-cms-worker-1   |     return self._autodiscover_tasks_from_names([
tutor_local-cms-worker-1   |                                                ^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/app/base.py", line 706, in <listcomp>
tutor_local-cms-worker-1   |     for pkg in fixup.autodiscover_tasks()
tutor_local-cms-worker-1   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 110, in autodiscover_tasks
tutor_local-cms-worker-1   |     return [config.name for config in apps.get_app_configs()]
tutor_local-cms-worker-1   |                                       ^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/django/apps/registry.py", line 147, in get_app_configs
tutor_local-cms-worker-1   |     self.check_apps_ready()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/django/apps/registry.py", line 138, in check_apps_ready
tutor_local-cms-worker-1   |     raise AppRegistryNotReady("Apps aren't loaded yet.")
tutor_local-cms-worker-1   | django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
tutor_local-cms-worker-1   | Traceback (most recent call last):
tutor_local-cms-worker-1   |   File "/openedx/venv/bin/celery", line 8, in <module>
tutor_local-cms-worker-1   |     sys.exit(main())
tutor_local-cms-worker-1   |              ^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/__main__.py", line 15, in main
tutor_local-cms-worker-1   |     sys.exit(_main())
tutor_local-cms-worker-1   |              ^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/bin/celery.py", line 236, in main
tutor_local-cms-worker-1   |     return celery(auto_envvar_prefix="CELERY")
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
tutor_local-cms-worker-1   |     return self.main(*args, **kwargs)
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/click/core.py", line 1078, in main
tutor_local-cms-worker-1   |     rv = self.invoke(ctx)
tutor_local-cms-worker-1   |          ^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
tutor_local-cms-worker-1   |     return _process_result(sub_ctx.command.invoke(sub_ctx))
tutor_local-cms-worker-1   |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
tutor_local-cms-worker-1   |     return ctx.invoke(self.callback, **ctx.params)
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/click/core.py", line 783, in invoke
tutor_local-cms-worker-1   |     return __callback(*args, **kwargs)
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
tutor_local-cms-worker-1   |     return f(get_current_context(), *args, **kwargs)
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/bin/base.py", line 135, in caller
tutor_local-cms-worker-1   |     return f(ctx, *args, **kwargs)
tutor_local-cms-worker-1   |            ^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/bin/worker.py", line 348, in worker
tutor_local-cms-worker-1   |     worker = app.Worker(
tutor_local-cms-worker-1   |              ^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/worker/worker.py", line 93, in __init__
tutor_local-cms-worker-1   |     self.app.loader.init_worker()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/loaders/base.py", line 110, in init_worker
tutor_local-cms-worker-1   |     self.import_default_modules()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/loaders/base.py", line 104, in import_default_modules
tutor_local-cms-worker-1   |     raise response
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/utils/dispatch/signal.py", line 276, in send
tutor_local-cms-worker-1   |     response = receiver(signal=self, sender=sender, **named)
tutor_local-cms-worker-1   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 100, in on_import_modules
tutor_local-cms-worker-1   |     self.worker_fixup.validate_models()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 138, in validate_models
tutor_local-cms-worker-1   |     self.django_setup()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/celery/fixups/django.py", line 134, in django_setup
tutor_local-cms-worker-1   |     django.setup()
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/django/__init__.py", line 24, in setup
tutor_local-cms-worker-1   |     apps.populate(settings.INSTALLED_APPS)
tutor_local-cms-worker-1   |   File "/openedx/venv/lib/python3.11/site-packages/django/apps/registry.py", line 93, in populate
tutor_local-cms-worker-1   |     raise ImproperlyConfigured(
tutor_local-cms-worker-1   | django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: search