Add components to pyinstaller hiddenimports

This commit is contained in:
Florian Bruhin 2018-12-10 10:26:25 +01:00
parent fcb39c1d7f
commit 15e9127fa0
2 changed files with 31 additions and 7 deletions

View File

@ -6,6 +6,8 @@ import os
sys.path.insert(0, os.getcwd())
from scripts import setupcommon
from qutebrowser.extensions import loader
block_cipher = None
@ -27,6 +29,13 @@ def get_data_files():
return data_files
def get_hidden_imports():
imports = ['PyQt5.QtOpenGL', 'PyQt5._QOpenGLFunctions_2_0']
for info in loader.walk_components():
imports.append('qutebrowser.components.' + info.name)
return imports
setupcommon.write_git_file()
@ -42,7 +51,7 @@ a = Analysis(['../qutebrowser/__main__.py'],
pathex=['misc'],
binaries=None,
datas=get_data_files(),
hiddenimports=['PyQt5.QtOpenGL', 'PyQt5._QOpenGLFunctions_2_0'],
hiddenimports=get_hidden_imports(),
hookspath=[],
runtime_hooks=[],
excludes=['tkinter'],

View File

@ -22,22 +22,37 @@
import importlib.abc
import pkgutil
import types
import typing
import attr
from qutebrowser import components
from qutebrowser.utils import log
@attr.s
class ComponentInfo:
name = attr.ib() # type: str
finder = attr.ib() # type: importlib.abc.PathEntryFinder
def load_components() -> None:
"""Load everything from qutebrowser.components."""
for info in walk_components():
_load_component(info)
def walk_components() -> typing.Iterator[ComponentInfo]:
"""Yield ComponentInfo objects for all modules."""
for finder, name, ispkg in pkgutil.walk_packages(components.__path__):
if ispkg:
continue
_load_module(finder, name)
yield ComponentInfo(name=name, finder=finder)
def _load_module(finder: importlib.abc.PathEntryFinder,
name: str) -> types.ModuleType:
log.extensions.debug("Importing {}".format(name))
loader = finder.find_module(name)
def _load_component(info: ComponentInfo) -> types.ModuleType:
log.extensions.debug("Importing {}".format(info.name))
loader = info.finder.find_module(info.name)
assert loader is not None
return loader.load_module(name)
return loader.load_module(info.name)