I found a solution using hooks, as template I used this answer on stackoverflow: https://stackoverflow.com/questions/60384288/pyinstaller-modulenotfounderror
In a subfolder 'hooks' I have now a file 'hook-markdown.py': *# copied from* *# https://stackoverflow.com/questions/60384288/pyinstaller-modulenotfounderror* *# and modified* *from PyInstaller.utils.hooks import collect_all* *def hook(hook_api):* * packages = [* * 'markdown'* * ]* * for package in packages:* * datas, binaries, hiddenimports = collect_all(package)* * hook_api.add_datas(datas)* * hook_api.add_binaries(binaries)* * hook_api.add_imports(*hiddenimports)* And in 'paneltest.spec' I removed everything related to hiddenimports, the Analysis part looks now like this: *a = Analysis( ['paneltest.py'], pathex=[ 'C:\\Users\\mdk\\Documents\\Buero\\lum\\lumilab'], datas=[ # some html and js files are needed, for simplicity all files are copied # for these modules this approach worked solving issues ( pypath + 'Lib\\site-packages\\pyviz_comms', 'pyviz_comms'), ( pypath + 'Lib\\site-packages\\bokeh', 'bokeh'), ( pypath + 'Lib\\site-packages\\panel', 'panel'), ], hiddenimports=[], hookspath=['.\\hooks\\'], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False)* I do not really understand why this hook is working, and the hiddenimport not, but anyway: I am glad it works now... mdk schrieb am Sonntag, 3. April 2022 um 16:16:57 UTC+2: > Hi, > > I am stuck with solving an ModuleNotFoundError when using a submodule > panel.pane.Markdown. > My impression from the docs is, that this could be solved with hooks and / > or hidden imports, but so far the error is still there. > Any hints or code snippets on how to solve this problem would be very > welcome, thanks in advance. > > I am using a current miniconda python on a windows machine. > > Here is my code, unfortunaletely this minimal running example has still > auite some lines of code.: > > A) The application file, named "paneltest.py" > *import panel as pn* > > *if __name__ == '__main__':* > * print('Panel Test with Markdown')* > > * # version a)* > * # To see version a) in a webpage comment out version b)* > * test = pn.widgets.TextInput(name='A widget', value='A string')* > > * # version b)* > * # to see version a) comment out this line* > * test = pn.pane.Markdown('#Test') * > > * # opens a page in your browser showing * > * # a) an widget* > * # or b) throws a ModuleNotFoundError* > * server = test.show(threaded=False)* > > B) the specs-file, named "paneltest.spec" > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *# run at console in the directory e.g. with the following options # > pyinstaller -D -y paneltest.spec from PyInstaller.utils.hooks import > collect_submodulesblock_cipher = None# Change path to python version on > your workstationpypath = 'C:\\[your path]\\miniconda3\\'# This does not > solve the ModuleNotFoundErrorhiddenimports_markdown = > collect_submodules('markdown')# 'markdown.extensions.extra' is among the > collected submodulesprint(hiddenimports_markdown)a = Analysis( > ['paneltest.py'], pathex=[ 'C:\\Users\\[your path]'], > datas=[ # some html and js files are needed, for simplicity all > files are copied # for these modules, this approach worked solving > issues ( pypath + > 'Lib\\site-packages\\pyviz_comms', 'pyviz_comms'), > ( pypath + 'Lib\\site-packages\\bokeh', > 'bokeh'), ( pypath + 'Lib\\site-packages\\panel', > 'panel'), # For this module copying all file does not > solve the ModuleNotFoundError ( pypath + > 'Lib\\site-packages\\markdown', 'markdown'), ], > hiddenimports=hiddenimports_markdown, hookspath=[], > runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, > win_private_assemblies=False, cipher=block_cipher, > noarchive=False)pyz = PYZ( a.pure, a.zipped_data, > cipher=block_cipher)exe = EXE( pyz, a.scripts, [], > exclude_binaries=True, name='paneltest', debug=False, > bootloader_ignore_signals=False, strip=False, upx=True, > console=True )coll = COLLECT( exe, a.binaries, a.zipfiles, > a.datas, strip=False, upx=True, upx_exclude=[], > name='paneltest')* > > C) Traceback when starting the application "paneltest.exe" in a terminal > > > > > > > > > > > > > > > > > > > > > > > > > *Panel Test with MarkdownLaunching server at http://localhost:64653 > <http://localhost:64653>ERROR:tornado.application:Uncaught exception GET / > (::1)HTTPServerRequest(protocol='http', host='localhost:64653', > method='GET', uri='/', version='HTTP/1.1', remote_ip='::1')Traceback (most > recent call last):[...] File "panel\pane\markup.py", line 41, in > _get_model model = self._bokeh_model(**self._get_properties()) File > "panel\pane\markup.py", line 296, in _get_properties html = > markdown.markdown(data, extensions=self.extensions, File > "markdown\core.py", line 386, in markdown md = Markdown(**kwargs) File > "markdown\core.py", line 96, in __init__ > self.registerExtensions(extensions=kwargs.get('extensions', []), File > "markdown\core.py", line 123, in registerExtensions ext = > self.build_extension(ext, configs.get(ext, {})) File "markdown\core.py", > line 162, in build_extension module = importlib.import_module(ext_name) > File "importlib\__init__.py", line 127, in import_module File "<frozen > importlib._bootstrap>", line 1030, in _gcd_import File "<frozen > importlib._bootstrap>", line 1007, in _find_and_load File "<frozen > importlib._bootstrap>", line 984, in > _find_and_load_unlockedModuleNotFoundError: No module named > 'extra'ERROR:tornado.access:500 GET / (::1) > 160.90msWARNING:tornado.access:404 GET /favicon.ico (::1) 1.00ms* > > > -- You received this message because you are subscribed to the Google Groups "PyInstaller" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pyinstaller/551a9973-13a4-48e5-8f3a-0b221a6c1658n%40googlegroups.com.
