ImportError: ningún módulo llamado geometría mientras ejecuta ejecutables obtenidos de pyinstaller

Traceback (most recent call last): File "", line 1, in  File py_installer/PyInstaller-2.1/PyInstaller/loader/pyi_importers.py", line 270, in load_module File py_installer/PyInstaller-2.1/FaceMatcher/build/FaceMatcher/out00-PYZ.pyz/proj_code", line 11, in  File PyInstaller-2.1/PyInstaller/loader/pyi_importers.py", line 270, in load_module File PyInstaller-2.1/FaceMatcher/build/FaceMatcher/out00-PYZ.pyz/skimage.transform", line 1, in  File py_installer/PyInstaller-2.1/PyInstaller/loader/pyi_importers.py", line 270, in load_module File py_installer/PyInstaller-2.1/FaceMatcher/build/FaceMatcher/out00-PYZ.pyz/skimage.transform.hough_transform", line 7, in  File py_installer/PyInstaller-2.1/PyInstaller/loader/pyi_importers.py", line 409, in load_module File "_hough_transform.pyx", line 13, in init skimage.transform._hough_transform (skimage/transform/_hough_transform.c:7337) File "py_installer/PyInstaller-2.1/PyInstaller/loader/pyi_importers.py", line 270, in load_module File "py_installer/PyInstaller-2.1/FaceMatcher/build/FaceMatcher/out00-PYZ.pyz/skimage.draw", line 1, in  File "py_installer/PyInstaller-2.1/PyInstaller/loader/pyi_importers.py", line 409, in load_module File "_draw.pyx", line 1, in init skimage.draw._draw (skimage/draw/_draw.c:7257) ImportError: No module named geometry 

He estado recibiendo por encima del error. ¿Alguien podría decirme cómo lo arreglaría?

El problema es que skimage.transform requiere una pequeña “cadena” de importaciones ocultas . Estas son importaciones que ocurren en una variedad de formas en que Pyinstaller no puede detectarlas automáticamente, es decir, usando __import__ , etc. Por lo tanto, debe informar a Pyinstaller directamente sobre estas importaciones para que sepa cómo inspeccionarlas y agregarlas a su comstackción.

Puede hacer esto de dos maneras:

  1. El indicador de línea de comando –hidden-import, que es útil si solo tiene que especificar unos pocos módulos.
  2. Archivos ‘enganchados’, que pueden ayudarlo a agrupar algunas importaciones ocultas según el módulo que las requiera.

Por ejemplo, para su situación específica, puede crear un archivo llamado hook-skimage.transform.py y poner lo siguiente en él:

 hiddenimports = ['skimage.draw.draw', 'skimage.draw._draw', 'skimage.draw.draw3d', 'skimage._shared.geometry', 'skimage._shared.interpolation', 'skimage.filter.rank.core_cy'] 

Es posible que no necesite todos los módulos especificados. A su comstackción solo le faltaba skimage._shared.geometry, por lo que podría intentar incluir solo ese archivo con el indicador de línea de comando –hidden-import, o solo incluir skimage._shared.geometry en su archivo hook-skimage.transform.py. Sin embargo, esas importaciones ocultas específicas corrigieron mi escenario en Windows 7 de 64 bits con skimage 0.9.3.

Luego, dile a pyinstaller dónde buscar tus archivos de enganche adicionales. Por lo tanto, si coloca el archivo hook-skimage.transform.py en su ‘.’ directorio que necesita para modificar su comando de comstackción de pyinstaller para incluir --additional-hooks-dir=.

Esto hará que pyinstaller inspeccione los módulos que especificó cuando intenta importar skimage.transform.hough_line como se mencionó en su salida.