gui init: raise GuiImportError instead of sys.exit if dep is missing
This commit is contained in:
@@ -11,6 +11,10 @@ if is_local and os.name == 'nt':
|
||||
os.add_dll_directory(os.path.dirname(__file__))
|
||||
|
||||
|
||||
class GuiImportError(ImportError):
|
||||
pass
|
||||
|
||||
|
||||
from .version import ELECTRUM_VERSION
|
||||
from .util import format_satoshis
|
||||
from .wallet import Wallet
|
||||
|
||||
@@ -51,6 +51,7 @@ from .commands import known_commands, Commands
|
||||
from .simple_config import SimpleConfig
|
||||
from .exchange_rate import FxThread
|
||||
from .logging import get_logger, Logger
|
||||
from . import GuiImportError
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from electrum import gui
|
||||
@@ -622,7 +623,10 @@ class Daemon(Logger):
|
||||
gui_name = 'qt'
|
||||
self.logger.info(f'launching GUI: {gui_name}')
|
||||
try:
|
||||
gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
|
||||
try:
|
||||
gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
|
||||
except GuiImportError as e:
|
||||
sys.exit(str(e))
|
||||
self.gui_object = gui.ElectrumGui(config=config, daemon=self, plugins=plugins)
|
||||
if not self._stop_entered:
|
||||
self.gui_object.main()
|
||||
|
||||
@@ -29,16 +29,19 @@ import sys
|
||||
import os
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from electrum import GuiImportError
|
||||
|
||||
KIVY_GUI_PATH = os.path.abspath(os.path.dirname(__file__))
|
||||
os.environ['KIVY_DATA_DIR'] = os.path.join(KIVY_GUI_PATH, 'data')
|
||||
|
||||
try:
|
||||
sys.argv = ['']
|
||||
import kivy
|
||||
except ImportError:
|
||||
except ImportError as e:
|
||||
# This error ideally shouldn't be raised with pre-built packages
|
||||
sys.exit("Error: Could not import kivy. Please install it using the "
|
||||
"instructions mentioned here `https://kivy.org/#download` .")
|
||||
raise GuiImportError(
|
||||
"Error: Could not import kivy. Please install it using the "
|
||||
"instructions mentioned here `https://kivy.org/#download` .") from e
|
||||
|
||||
# minimum required version for kivy
|
||||
kivy.require('1.8.0')
|
||||
|
||||
@@ -30,12 +30,15 @@ import traceback
|
||||
import threading
|
||||
from typing import Optional, TYPE_CHECKING, List
|
||||
|
||||
from electrum import GuiImportError
|
||||
|
||||
try:
|
||||
import PyQt5
|
||||
import PyQt5.QtGui
|
||||
except Exception:
|
||||
sys.exit("Error: Could not import PyQt5 on Linux systems, you may try 'sudo apt-get install python3-pyqt5'")
|
||||
except Exception as e:
|
||||
raise GuiImportError(
|
||||
"Error: Could not import PyQt5 on Linux systems, "
|
||||
"you may try 'sudo apt-get install python3-pyqt5'") from e
|
||||
|
||||
from PyQt5.QtGui import QGuiApplication
|
||||
from PyQt5.QtWidgets import (QApplication, QSystemTrayIcon, QWidget, QMenu,
|
||||
|
||||
Reference in New Issue
Block a user