Index: runserver.spec |
=================================================================== |
--- a/runserver.spec |
+++ b/runserver.spec |
@@ -1,9 +1,29 @@ |
# PyInstaller spec, run "pyinstaller runserver.spec" from repository root to build |
-a = Analysis( |
- ['runserver.py'], |
+# Hidden imports are supposed to be analyzed recursively. However, due to |
+# a bug in PyInstaller imports from inside hidden modules aren't considered. |
+# https://github.com/pyinstaller/pyinstaller/issues/1086 |
+def AnalysisWithHiddenImportsWorkaround(scripts, **kwargs): |
Sebastian Noack
2015/05/22 21:19:27
Yeah, as the comment says, the hiddenimports passe
|
+ import os |
+ |
+ filename = os.path.join(WORKPATH, '_hidden_imports.py') |
+ with open(filename, 'wb') as file: |
+ for module in kwargs.pop('hiddenimports'): |
+ print >>file, 'import ' + module |
+ |
+ a = Analysis([filename] + scripts, **kwargs) |
+ a.scripts -= [('_hidden_imports', None, None)] |
Wladimir Palant
2015/05/26 10:46:31
Shouldn't we remove _hidden_imports.py here?
Sebastian Noack
2015/05/26 11:13:57
The first element is the module name, not the file
Wladimir Palant
2015/05/26 11:24:43
And I mean the file - the one you created on disk,
Sebastian Noack
2015/05/26 11:37:39
Along with some other temporary files in the build
|
+ return a |
+ |
+a = AnalysisWithHiddenImportsWorkaround( |
+ ['cms/bin/test_server.py'], |
pathex=['.'], |
- hiddenimports=[], |
+ hiddenimports=[ |
+ 'markdown.extensions.attr_list', |
+ |
+ # Used by globals/get_browser_versions.py in web.adblockplus.org |
+ 'xml.dom.minidom', |
+ ], |
excludes=[ |
'distutils', |
'doctest', |