Написал проект на python, используя PyQt5. Благополучно смог собрать проект с помощью pyinstaller в один файл. На родном Windows (11) всё работает отлично, проект запускается, проблем никаких нет. Но мне надо перенести программу в Linux (Linux astra), она должна работать там. Однако на linux возникло множество проблем: при запуске через wine вылетала ошибка (проблемы с matplotlib), пытался собрать проект через тот же pyinstaller, но уже через эмулятор в Linux, та же проблема. Пытался запустить через Proton в steam - тоже не помогло, так ещё и в логах вообще не то. Все зависимости проверял по 5 раз, версии так же. Пришёл к выводу, что pyinstaller не подходит для линкуса, либо я неправильно собираю проект.
Так вот сам вопрос, как лучше всего собрать мой проект, чтобы он заработал на Linux? С помощью pyinstaller или есть способы получше?
Pyinstaller вполне себе нативно работает в том числе и под linux (см. пункт Operating System), так-что не следует извращаться с wine/proton и прочими прослойками и просто собирайте напрямую в астре.
Другое дело, а нужно ли вообще это? Куда более правильный путь - просто установить зависимости и запускать python-скрипт напрямую (обычно в linux-дестрибутивах python стоит по умолчанию, а если боитесь, что ваш код украдут, то бандл Pyinstaller`а очень легко выпотрошить и достать его).
Спасибо за ответ! Я пытался напрямую собрать свой проект в астре, однако каждый раз возникала проблема с matplotlib. Вот что я вводил в консоли для сборки:
pyinstaller --onefile --windowed --runtime-tmpdir "/tmp" \
--add-data "resources/*:resources" \
--add-data "lab1/*:lab1" \
--add-data "lab2/*:lab2" \
--add-data "lab3/*:lab3" \
--add-data "login/*:login" \
--add-data "main_menu/*:main_menu" \
--hidden-import PyQt5 \
--hidden-import os \
--hidden-import sys \
--hidden-import shutil \
--hidden-import matplotlib.backends.backend_qt5agg \
--hidden-import numpy \
--hidden-import pandas \
--hidden-import docx \
--hidden-import scipy \
--hidden-import openpyxl \
--paths "/" \
main.py
Возможно я импортирую не то, либо недостаточно.
Проблема также состоит в том, что мне нужно программу установить на 30+ пк с астра за короткое время (в районе 1-2 часов), при чём без прав администратора или суперпользователя. Желательно иметь возможность запускать программу сразу, через ярлык или один файл, т.к. программой будут пользоваться другие люди. За безопасность не волнуюсь, пусть крадут, там нет ничего важного - главное чтобы программа нормально запускалась на пк с астра.
Могу также отправить Вам вывод pyinstaller`а, wine или proton в консоли, если у Вас есть возможность просмотреть их и найти проблему.
Фархад Агамогланов,
1. Ещё раз - pyinstaller всё отлично компилирует и на linux. Для этого не нужен не wine, не proton и чего там ещё. Просто ставите в систему pyinstaller и компилируете
2. Зачем столько скрытых импортов? Pyinstaller сам подтянет необходимые зависимости без вашего указания