Проблемы с PyInstaller - PullRequest
       31

Проблемы с PyInstaller

0 голосов
/ 02 ноября 2018

Я хотел бы объединить приложение в исполняемый файл, используя PyInstaller. У меня проблемы из-за библиотеки geopandas. В настоящее время мой скрипт throwaway.py содержит только следующий импорт:

import geopandas

Однако работа pyinstaller throwaway.py не работает. Кажется, у него проблемы с PyQt5, который импортируется только matplotlib.

Журнал для pyinstaller слишком длинный, чтобы включать его здесь, однако ниже показано последнее возникшее исключение:

Exception:
            Cannot find existing PyQt5 plugin directories
            Paths checked: c:/qt/qt_1489878162099/_b_env/Library/plugins

Я не уверен, как подойти к этому, но есть несколько концептуальных вариантов:

  • Найдите способ исключить геопанду из импорта matplotlib. Я не использую matplotlib, поэтому мне не нужно, чтобы он был упакован в первую очередь
  • Выясните причину возникновения этой проблемы и предотвратите / устраните ее

Может ли кто-нибудь помочь, пожалуйста? Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Я решил эту проблему, загрузив версию для разработки pyinstaller следующим образом:

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

Я получил выше от по этой ссылке . Текущий conda-forge дистрибутив pyinstaller по-прежнему не включает это изменение , которое включено в версию для разработчиков. Код, предшествующий этому изменению, является причиной ошибки в вопросе.

Надеюсь, скоро появится дистрибутив conda-forge, чтобы включить его в основной дистрибутив.

Таким образом, если у вас возникла эта проблема, у вас есть два варианта:

  • Установите версию разработки PyInstaller и используйте ее
  • Вручную зайдите в ~\anaconda3\Lib\site-packages\PyInstaller\utils\hooks\qt.py и измените файл, как указано здесь
0 голосов
/ 02 ноября 2018

У меня pyinstaller -y -d --clean throwaway.py работает.

enter image description here

Также, проверьте этот вопрос .

Существует проблема с лимитом повторения, указанным здесь . Попробуйте увеличить его так:

import sys
sys.setrecursionlimit(5000)
...