Fail nicely when optional dependencies are missing
This commit is contained in:
parent
89c183e381
commit
16e6a7fdc0
@ -22,6 +22,9 @@ class MopidyException(Exception):
|
||||
class SettingsError(MopidyException):
|
||||
pass
|
||||
|
||||
class OptionalDependencyError(MopidyException):
|
||||
pass
|
||||
|
||||
from mopidy import settings as default_settings_module
|
||||
from mopidy.utils.settings import SettingsProxy
|
||||
settings = SettingsProxy(default_settings_module)
|
||||
|
||||
@ -2,7 +2,7 @@ import logging
|
||||
import multiprocessing
|
||||
import optparse
|
||||
|
||||
from mopidy import get_version, settings
|
||||
from mopidy import get_version, settings, OptionalDependencyError
|
||||
from mopidy.utils import get_class
|
||||
from mopidy.utils.log import setup_logging
|
||||
from mopidy.utils.path import get_or_create_folder, get_or_create_file
|
||||
@ -69,9 +69,12 @@ class CoreProcess(BaseProcess):
|
||||
def setup_frontends(self, core_queue, backend):
|
||||
frontends = []
|
||||
for frontend_class_name in settings.FRONTENDS:
|
||||
frontend = get_class(frontend_class_name)(core_queue, backend)
|
||||
frontend.start()
|
||||
frontends.append(frontend)
|
||||
try:
|
||||
frontend = get_class(frontend_class_name)(core_queue, backend)
|
||||
frontend.start()
|
||||
frontends.append(frontend)
|
||||
except OptionalDependencyError as e:
|
||||
logger.info(u'Disabled: %s (%s)', frontend_class_name, e)
|
||||
return frontends
|
||||
|
||||
def process_message(self, message):
|
||||
|
||||
@ -3,8 +3,11 @@ import multiprocessing
|
||||
import socket
|
||||
import time
|
||||
|
||||
# TODO Log nice error message if pylast isn't found
|
||||
import pylast
|
||||
try:
|
||||
import pylast
|
||||
except ImportError as e:
|
||||
from mopidy import OptionalDependencyError
|
||||
raise OptionalDependencyError(e)
|
||||
|
||||
from mopidy import get_version, settings, SettingsError
|
||||
from mopidy.frontends.base import BaseFrontend
|
||||
|
||||
Loading…
Reference in New Issue
Block a user