Для выпуска релиза в Windows нужно выполнить скрипт release.bat
из папки scripts
:
release.bat
Обратите внимание: для корректного запуска собранного приложения на Windows 7 без установленного python релиз необходимо собирать на компьютере с Windows 7. Иначе будут ошибки с отсутствием исходных библиотек (python36.dll, api-ms-win-crt-runtime-l1-1-0.dll).
Для выпуска релиза в Linux нужно выполнить скрипт release.sh
из папки scripts
:
Обратите внимание, что для запуска скрипта в Linux могут потребоваться дополнительные действия:
- Добавьте
release.sh
права на запуск:
chmod +x ./release.sh
- Установите версию python3 c встроенным модулем tkinter:
sudo apt-get install python3-tk
- Установите версию python3 с поддержкой виртуальных кружений:
sudo apt-get install python3-venv
- Установите стандартную библиотеку idle:
sudo apt-get install idle3
- Запустите скрипт сборки:
bash release.sh
Для выпуска релиза в MacOS нужно выполнить скрипт release_macos.sh
из папки scripts
:
sudo ./release_macos.sh
Обратите внимание, что для запуска скрипта в MacOS могут потребоваться дополнительные действия:
- Установите версию python3 c встроенным модулем tkinter (для mac OS tkinter поддерживается в версии python3.9 и старше):
brew install [email protected]
- Сборка приложения на macOS (папка с расширением .app, а не просто испольняемый файл) делается с помощью модуля py2app, который явным образом не добавляет библиотеку tkinter в библиотеку собранного приложения. Чтобы запуск приложения был возможен на всех системах, а не только там, где установлен python с tkinter, исходные файлы библиотеки явным образом копируются в виртуальное окружение в
release_macos.sh
с помощью команд:
cp -R /Library/Frameworks/Python.framework/Versions/3.9/lib/tcl8.6/ venv/lib/tcl8.6
cp -R /Library/Frameworks/Python.framework/Versions/3.9/lib/tcl8/ venv/lib/tcl8
cp -R /Library/Frameworks/Python.framework/Versions/3.9/lib/tk8.6/ venv/lib/tk8.6
Если на машине, где вы собираете приложение путь до библиотеки tkinter иной, то его нужно заменить. Чтобы его узнать запустите python3 из терминала и введите:
import tkinter
root = tkinter.Tk() # the window will show up - close it
print(root.tk.exprstring('$tcl_library')) # replace /Library/Frameworks/Python.framework/Versions/3.9/lib/tcl8.6/ with this path
print(root.tk.exprstring('$tk_library')) # replace /Library/Frameworks/Python.framework/Versions/3.9/lib/tk8.6/ venv/lib/tk8.6 with this path
А также поменяйте путь к /tcl8/ с аналогичным началом (/Library/Frameworks/Python.framework/Versions/3.9/lib/), как те, что выведет вам print выше.