NameError: name 'PLUGINS' is not defined #416

Closed
opened 2026-04-05 16:30:58 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @tinyhare on 2/5/2026

NetBox Edition

NetBox Community

NetBox Version

NetBox Community v4.5.2-Docker-4.0.0

Python Version

3.12

Steps to Reproduce

I want to install NetBox Topology Views

  1. docker compose exec -it -u root netbox /usr/bin/bash
  2. source /opt/netbox/venv/bin/activate
  3. uv pip install netbox-topology-views
  4. Add plugins configuration at the /etc/netbox/config/extra.py(Followed the format in the file example)
## Enable installed plugins. Add the name of each plugin to the list.
# from netbox.configuration.configuration import PLUGINS
# PLUGINS.append('my_plugin')

PLUGINS.append('netbox_topology_views')

## Plugins configuration settings. These settings are used by various plugins that the user may have installed.
## Each key in the dictionary is the name of an installed plugin and its value is a dictionary of settings.
# from netbox.configuration.configuration import PLUGINS_CONFIG
# PLUGINS_CONFIG['my_plugin'] = {
#   'foo': 'bar',
#   'buzz': 'bazz'
# }

PLUGINS_CONFIG['netbox_topology_views'] = { 
    'static_image_directory': 'netbox_topology_views/img',
    'allow_coordinates_saving': True,
    'always_save_coordinates': True
}
  1. python3 /opt/netbox/netbox/manage.py migrate

Get the error:

(venv) root@be1734d9285b:/opt/netbox/netbox# python3 /opt/netbox/netbox/manage.py migrate
🧬 loaded config '/etc/netbox/config/configuration.py'
Traceback (most recent call last):
  File "/opt/netbox/netbox/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/opt/netbox/venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/opt/netbox/venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 382, in execute
    settings.INSTALLED_APPS
  File "/opt/netbox/venv/lib/python3.12/site-packages/django/conf/__init__.py", line 81, in __getattr__
    self._setup(name)
  File "/opt/netbox/venv/lib/python3.12/site-packages/django/conf/__init__.py", line 68, in _setup
    self._wrapped = Settings(settings_module)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/netbox/venv/lib/python3.12/site-packages/django/conf/__init__.py", line 166, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/netbox/netbox/netbox/settings.py", line 68, in <module>
    configuration = importlib.import_module(config_path)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/opt/netbox/netbox/netbox/configuration.py", line 71, in <module>
    _loaded_configurations = read_configurations(
                             ^^^^^^^^^^^^^^^^^^^^
  File "/opt/netbox/netbox/netbox/configuration.py", line 55, in read_configurations
    _import(module_name, f.path, loaded_configurations)
  File "/opt/netbox/netbox/netbox/configuration.py", line 20, in _import
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/etc/netbox/config/extra.py", line 30, in <module>
    PLUGINS.append('netbox_topology_views')
    ^^^^^^^
NameError: name 'PLUGINS' is not defined
(venv) root@be1734d9285b:/opt/netbox/netbox# 

Expected Behavior

No NameError exception was raised

Observed Behavior

A NameError exception was raised

*Originally created by @tinyhare on 2/5/2026* ### NetBox Edition NetBox Community ### NetBox Version NetBox Community v4.5.2-Docker-4.0.0 ### Python Version 3.12 ### Steps to Reproduce I want to install NetBox Topology Views 1. `docker compose exec -it -u root netbox /usr/bin/bash` 2. `source /opt/netbox/venv/bin/activate` 3. `uv pip install netbox-topology-views` 4. Add plugins configuration at the /etc/netbox/config/extra.py(Followed the format in the file example) ``` ## Enable installed plugins. Add the name of each plugin to the list. # from netbox.configuration.configuration import PLUGINS # PLUGINS.append('my_plugin') PLUGINS.append('netbox_topology_views') ## Plugins configuration settings. These settings are used by various plugins that the user may have installed. ## Each key in the dictionary is the name of an installed plugin and its value is a dictionary of settings. # from netbox.configuration.configuration import PLUGINS_CONFIG # PLUGINS_CONFIG['my_plugin'] = { # 'foo': 'bar', # 'buzz': 'bazz' # } PLUGINS_CONFIG['netbox_topology_views'] = { 'static_image_directory': 'netbox_topology_views/img', 'allow_coordinates_saving': True, 'always_save_coordinates': True } ``` 4. `python3 /opt/netbox/netbox/manage.py migrate` Get the error: ``` (venv) root@be1734d9285b:/opt/netbox/netbox# python3 /opt/netbox/netbox/manage.py migrate 🧬 loaded config '/etc/netbox/config/configuration.py' Traceback (most recent call last): File "/opt/netbox/netbox/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/opt/netbox/venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/opt/netbox/venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 382, in execute settings.INSTALLED_APPS File "/opt/netbox/venv/lib/python3.12/site-packages/django/conf/__init__.py", line 81, in __getattr__ self._setup(name) File "/opt/netbox/venv/lib/python3.12/site-packages/django/conf/__init__.py", line 68, in _setup self._wrapped = Settings(settings_module) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/venv/lib/python3.12/site-packages/django/conf/__init__.py", line 166, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "/opt/netbox/netbox/netbox/settings.py", line 68, in <module> configuration = importlib.import_module(config_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "/opt/netbox/netbox/netbox/configuration.py", line 71, in <module> _loaded_configurations = read_configurations( ^^^^^^^^^^^^^^^^^^^^ File "/opt/netbox/netbox/netbox/configuration.py", line 55, in read_configurations _import(module_name, f.path, loaded_configurations) File "/opt/netbox/netbox/netbox/configuration.py", line 20, in _import spec.loader.exec_module(module) File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "/etc/netbox/config/extra.py", line 30, in <module> PLUGINS.append('netbox_topology_views') ^^^^^^^ NameError: name 'PLUGINS' is not defined (venv) root@be1734d9285b:/opt/netbox/netbox# ``` ### Expected Behavior No NameError exception was raised ### Observed Behavior A NameError exception was raised
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/netbox#416