ImportError: нет модуля с именем геометрия при запуске исполняемых файлов, полученных из pyinstaller

Traceback (most recent call last):
 File "<string>", line 1, in <module>
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 <module>
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 <module>
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 <module>
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 <module>
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

Я получаю выше ошибки. Может кто-нибудь, пожалуйста, скажите мне, как я могу это исправить?


person thetna    schedule 17.03.2014    source источник
comment
пожалуйста, проверьте geometry установлен или нет?   -  person Nilesh    schedule 17.03.2014
comment
нет ничего, что называется модулем геометрии. Пробовал импортировать геометрию, не нашел.   -  person thetna    schedule 17.03.2014
comment
Но есть установленный модуль sympy.geometry.   -  person thetna    schedule 17.03.2014
comment
попробуйте это на консоли python >>> from sympy.geometry import * и проверьте, дает ли она ошибку или нет.   -  person Nilesh    schedule 17.03.2014
comment
Он не показывает никакой ошибки.   -  person thetna    schedule 17.03.2014


Ответы (1)


Проблема заключается в том, что skimage.transform требует небольшой «цепочки» из скрытый импорт. Это импорт, который происходит различными способами, которые Pyinstaller не может обнаружить автоматически, а именно с помощью __import__ и т. д. Таким образом, вы должны напрямую сообщить Pyinstaller об этих импортах, чтобы он знал, что их нужно проверить и добавить в вашу сборку.

Вы можете сделать это двумя способами:

  1. Флаг командной строки --hidden-import, который полезен, если вам нужно указать только несколько модулей.
  2. файлы-ловушки, которые могут помочь вам сгруппировать несколько скрытых импортов в зависимости от того, какой модуль их требует.

Например, для вашей конкретной ситуации вы можете создать файл с именем hook-skimage.transform.py и поместить в него следующее:

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

Вам могут не понадобиться все указанные модули. В вашей сборке отсутствовал только skimage._shared.geometry, поэтому вы можете попробовать включить только этот файл с флагом командной строки --hidden-import или включить только skimage._shared.geometry в свой файл hook-skimage.transform.py. Однако эти конкретные скрытые импорты исправили мой сценарий в 64-разрядной версии Windows 7 со skimage 0.9.3.

Затем сообщите pyinstaller, где искать дополнительные файлы ловушек. Итак, если вы поместите файл hook-skimage.transform.py в свой «.» вам нужно изменить команду сборки pyinstaller, чтобы включить --additional-hooks-dir=.

Это заставит pyinstaller проверять указанные вами модули при попытке импортировать skimage.transform.hough_line, как указано в вашем выводе.

person durden2.0    schedule 23.04.2014
comment
FWIW Я отправил запрос на извлечение в проект pyinstaller, чтобы получить модифицированную версию этого файла ловушки, включенную в следующий выпуск. Вы можете следить за ходом работы здесь, github.com/pyinstaller/pyinstaller/pull/120. - person durden2.0; 23.04.2014