sportorg / pysport

Sportorg is a comprehensive software solution developed in Python that streamlines the organization and execution of orienteering competitions.
https://sportorg.readthedocs.io/ru/latest/
GNU General Public License v3.0
34 stars 16 forks source link

Сборка дистрибутива msi #376

Closed Phylosof closed 4 years ago

Phylosof commented 4 years ago

Доброго времени суток разработчикам. Немного переработал под себя расчет ранга в программе и отчеты. Для удобства решил собрать дистрибутив cx-freeze'ом (коммандой bdist_msi), чтобы на каждом компьютере не компилить код, но не получилось. При запуске установленной программы на другом компьютере выдает ошибку: Traceback (most recent call last): File "C:\Program Files (x86)\Python37-32\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 40, in run File "C:\Program Files (x86)\Python37-32\Lib\site-packages\cx_Freeze\initscripts\Console.py", line 23, in run File "SportOrg.pyw", line 2, in <module> File "C:\pysport-dev\sportorg\gui\main.py", line 5, in <module> File "C:\Program Files (x86)\Python37-32\Lib\site-packages\PySide2\__init__.py", line 51, in <module> File "C:\Program Files (x86)\Python37-32\Lib\site-packages\PySide2\__init__.py", line 21, in _SetupQtDirectories File "C:\Program Files (x86)\Python37-32\Lib\site-packages\shiboken2\__init__.py", line 27, in <module> ImportError: DLL load failed: Не найден указанный модуль. Что я делаю не так? С самой компиляцией проблем не возникает, к билдом тоже.

daxartio commented 4 years ago

Добрый день. Не хватает модуля. Сейчас точно не смогу сказать. Возможно @sergeikobelev знает лучше.

sergeikobelev commented 4 years ago

Добрый день. Мы используем только сборку build от cx_Freeze, инсталлер делаем через Inno Setup, конфиг тоже есть в проекте. Попробовал собрать msi, не заработало, разбираться особо не стал.

Phylosof commented 4 years ago

c Inno Setup ситуация аналогичная, выдает такую же ошибку.

sergeikobelev commented 4 years ago

Какая у Вас версия python, 3.7 32bit? а cx_Freeze? Попробую на такой же собрать, как у Вас. SportOrg работает на машине, где запускаете свои билды?

Phylosof commented 4 years ago

3.7 32 бит. На той машине, где компилирую, все работает.

sergeikobelev commented 4 years ago

Возможно, дело в Microsoft Visual C++ Redistributable, он нужен для бинарников cx_Freeze. В инсталлер SportOrg мы его добавляли. Сейчас посмотрел описание cx_Freeze, для него есть опция include_msvcr, которая должна добавлять нужные библиотеки в сборку. Завтра потестирую на чистой Win10.

Phylosof commented 4 years ago

Я включил эту опцию еще раньше, но не помогает.

sergeikobelev commented 4 years ago

А SportOrg с инсталлера работает на машинах, где есть такие проблемы?

Phylosof commented 4 years ago

Все дело явно в каких-то модулях Пайтон, но не могу понять, что именно. Я так понял, что если установить Пайтон на машину, то программа начинает работать, хотя по идее должна и без него.

sergeikobelev commented 4 years ago

Укажите еще версию PySide2. У них как раз была такая ошибка https://bugreports.qt.io/browse/PYSIDE-1002, исправлено в 5.12.3.

Phylosof commented 4 years ago

Заработало с версией Python 3.7.7 и PySide2==5.14.1. "Заморозил" cледующие версии пакетов в requirements.txt: boltons==20.0.0 certifi==2019.11.28 chardet==3.0.4 cx-Freeze==6.1 docxtpl==0.6.3 elementpath==1.4.3 idna==2.9 Jinja2==2.11.1 lxml==4.5.0 MarkupSafe==1.1.1 playsound==1.2.2 polib==1.1.0 pyserial==3.4 PySide2==5.14.1 python-dateutil==2.8.1 python-docx==0.8.7 pywin32==227 pywinusb==0.4.2 requests==2.23.0 shiboken2==5.14.1 six==1.14.0 sportident==1.2.6 urllib3==1.25.8 xmlschema==1.1.2

daxartio commented 4 years ago

У меня тут есть ветка, где я интегрировал poetry, чтобы фризить зависимости, но пока руки не дойдут его залить. А так да, у нас у всех скорее всего разные окружения

andrew-dj commented 1 year ago

отлично собирается под Mac на Intel и Windows c помощью auto-py-to-exe