Repair loader for PyInstaller 3.4
This commit is contained in:
parent
3a26737b03
commit
9c4a791853
2 changed files with 17 additions and 11 deletions
|
@ -1,6 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright (C) 2012-2014 Bastian Kleineidam
|
# Copyright (C) 2012-2014 Bastian Kleineidam
|
||||||
# Copyright (C) 2016 Tobias Gruetzmacher
|
# Copyright (C) 2016-2019 Tobias Gruetzmacher
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Functions to load plugin modules.
|
Functions to load plugin modules.
|
||||||
|
@ -11,8 +11,8 @@ Example usage:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import absolute_import, division, print_function
|
from __future__ import absolute_import, division, print_function
|
||||||
import pkgutil
|
|
||||||
import importlib
|
import importlib
|
||||||
|
import pkgutil
|
||||||
from .output import out
|
from .output import out
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,13 +25,7 @@ def get_modules(folder):
|
||||||
prefix = mod.__name__ + "."
|
prefix = mod.__name__ + "."
|
||||||
modules = [m[1] for m in pkgutil.iter_modules(mod.__path__, prefix)]
|
modules = [m[1] for m in pkgutil.iter_modules(mod.__path__, prefix)]
|
||||||
|
|
||||||
# special handling for PyInstaller
|
for elm in _get_all_modules_pyinstaller():
|
||||||
importers = map(pkgutil.get_importer, mod.__path__)
|
|
||||||
toc = set()
|
|
||||||
for i in importers:
|
|
||||||
if hasattr(i, 'toc'):
|
|
||||||
toc |= i.toc
|
|
||||||
for elm in toc:
|
|
||||||
if elm.startswith(prefix):
|
if elm.startswith(prefix):
|
||||||
modules.append(elm)
|
modules.append(elm)
|
||||||
|
|
||||||
|
@ -42,6 +36,16 @@ def get_modules(folder):
|
||||||
out.error("could not load module %s: %s" % (name, msg))
|
out.error("could not load module %s: %s" % (name, msg))
|
||||||
|
|
||||||
|
|
||||||
|
def _get_all_modules_pyinstaller():
|
||||||
|
# Special handling for PyInstaller
|
||||||
|
toc = set()
|
||||||
|
importers = pkgutil.iter_importers(__package__)
|
||||||
|
for i in importers:
|
||||||
|
if hasattr(i, 'toc'):
|
||||||
|
toc |= i.toc
|
||||||
|
return toc
|
||||||
|
|
||||||
|
|
||||||
def get_plugins(modules, classobj):
|
def get_plugins(modules, classobj):
|
||||||
"""Find all class objects in all modules.
|
"""Find all class objects in all modules.
|
||||||
@param modules: the modules to search
|
@param modules: the modules to search
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- mode: python -*-
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
block_cipher = None
|
block_cipher = None
|
||||||
|
|
||||||
|
@ -13,7 +13,8 @@ a = Analysis(['../dosage'],
|
||||||
excludes=[],
|
excludes=[],
|
||||||
win_no_prefer_redirects=False,
|
win_no_prefer_redirects=False,
|
||||||
win_private_assemblies=False,
|
win_private_assemblies=False,
|
||||||
cipher=block_cipher)
|
cipher=block_cipher,
|
||||||
|
noarchive=False)
|
||||||
|
|
||||||
a.binaries = [x for x in a.binaries if not x[1].lower().startswith(r'c:\windows')]
|
a.binaries = [x for x in a.binaries if not x[1].lower().startswith(r'c:\windows')]
|
||||||
|
|
||||||
|
@ -28,4 +29,5 @@ exe = EXE(pyz,
|
||||||
debug=False,
|
debug=False,
|
||||||
strip=False,
|
strip=False,
|
||||||
upx=False,
|
upx=False,
|
||||||
|
runtime_tmpdir=None,
|
||||||
console=True)
|
console=True)
|
||||||
|
|
Loading…
Reference in a new issue