Ошибка при использовании PyInstaller

Я пытаюсь использовать PyInstaller для создания автономного приложения OSX, которое запускает графический интерфейс, который я создал. Когда я вхожу в терминал:

pyinstaller gui.py 

Кажется, что все работает, пока я не получу следующую ошибку:

 File "/Users/username/anaconda/bin/PyInstaller", line 11, in <module> sys.exit(run()) File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/__main__.py", line 90, in run run_build(pyi_config, spec_file, **vars(args)) File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/__main__.py", line 46, in run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/build_main.py", line 788, in main build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build')) File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/build_main.py", line 734, in build exec(text, spec_namespace) File "<string>", line 16, in <module> File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/build_main.py", line 212, in __init__ self.__postinit__() File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/datastruct.py", line 178, in __postinit__ self.assemble() File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/build_main.py", line 470, in assemble module_hook.post_graph() File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/imphook.py", line 409, in post_graph self._load_hook_module() File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/building/imphook.py", line 376, in _load_hook_module self.hook_module_name, self.hook_filename) File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/hooks/hook-PyQt4.py", line 33, in <module> (qt_menu_nib_dir('PyQt4'), ''), File "/Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/utils/hooks/qt.py", line 125, in qt_menu_nib_dir """.format(namespace, path)) Exception: Cannot find qt_menu.nib for PyQt4 Path checked: /Users/felipe/miniconda/envs/_build/lib/QtGui.framework/Resources/qt_menu.nib 

Кажется странным, поскольку мое имя не Фелипе!

У меня есть пара вопросов:

1) Как возможно, что на моем компьютере есть каталог под именем felipe? (Я использовал anaconda для установки qt, я не знаю, имеет ли это к этому какое-то отношение)?

2) До тех пор, пока я не получу сообщение об ошибке, PyInstaller ищет нужную папку. Почему он начинает искать в этом неопределенном (туманном для меня, что есть) каталоге, о котором я не знаю?

3) Я довольно новичок в отношении каталогов, и я не могу найти мистера Фелипе где-нибудь на своем компьютере. Когда я смотрю в папку «Пользователи», я просто вижу своего пользователя и пустую папку «Shared». (Я не знаю, для чего используется общая папка и почему она есть.)

4) На основании того, что я читал в Интернете, я скопировал qt_menu-nib в папку, где находится скрипт, который должен быть превращен в автономный. Что я должен сделать, чтобы успешно создать автономный отсюда?

Прежде всего, вы столкнулись с известной проблемой между PyInstaller и Anaconda: проблема PyInstaller № 2135 . В разговоре содержатся ответы на ваши вопросы.

1) Путь жестко закодирован в неправильно построенном двоичном коде Qt, который предоставляется Anaconda, см. Комментарий от mrady3 .

2) PyInstaller загружает привязку Qt4 для поиска ресурсов ( qt_menu.nib ), необходимых для запуска целевого приложения. Код hook пытается получить местоположение каталога ресурсов из самого Qt-бина. Qt возвращает неверный / hardcoded / path, и после этого процесс завершается с ошибкой.

3) См. Пункт 1), это была папка на машине сопровождающего. Qt предполагает, что его путь установки предварительно установлен до сборки; Репозиторий Anaconda содержит двоичный файл, который был скомпилирован с учетом другого пути установки.

4) Может быть несколько возможных подходов:

Попробуйте установить версию PyInstaller разработчика из источников, у нее есть некоторые исправления для вышеупомянутой проблемы . Затем попробуйте снова создать приложение:

 git clone https://github.com/pyinstaller/pyinstaller.git cd pyinstaller /Users/username/anaconda/bin/python setup.py sdist conda install dist/PyInstaller-3.3.dev0.tar.bz2 

Установите Qt4 с помощью доморощенного . Локальная компиляция займет много времени:

 brew install cartr/qt4/qt find /usr/local/Cellar/qt -name qt_menu.nib 

Измените /Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/hooks/hook-PyQt4.py Qt4 на /Users/username/anaconda/lib/python2.7/site- packages/PyInstaller/hooks/hook-PyQt4.py и замените вызов на qt_menu_nib_dir('PyQt4') на путь от установки homebrew ( '/usr/local/Cellar/qt/4.8.7_3/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib' ).

Или, альтернативно, просто qt_menu.nib в ожидаемое местоположение:

 sudo mkdir -p /Users/felipe/miniconda/envs/_build/lib/QtGui.framework/Resources/ sudo ln -s /usr/local/Cellar/qt/4.8.7_3/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib /Users/felipe/miniconda/envs/_build/lib/QtGui.framework/Resources/