Написал проект на 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 сам подтянет необходимые зависимости без вашего указания
Александр Нестеров, У меня сейчас стоит python: 3.5.3, pip 20.3.4, pyinstaller: 4.2, matplotlib 2.2.0. При сборке никаких ошибок нет, но вот при запуске через wine пишет:
File "Z:\tmp\_MEI2562\lab1\lab1_window.py", line 7, in
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
1.Если вам нужно запускать код под astra linux, то и собирайте на astra linux при помощи pyinstaller, wine использовать не нужно. Совсем.
2.Я вроде четко просил показать ошибку при попытке собрать именно под астрой, а не при запуске под wine
Александр Нестеров, Со сборкой, насколько я понял, проблем никаких нет. Ошибок никаких не выводит, проблема с запуском приложения. Я собираю как раз в самом астра и пытаюсь на нём же запустить.
Я немного поэкспериментировал, вроде решил проблему с matplotlib. Теперь вот такая ошибка:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix
this problem.
Фархад Агамогланов, знаете, если честно уже нет никакого желания помогать. Вам несколько раз написали, что wine не нужен, но вы будто бы не слышите и продолжаете пытаться запустить через него.
Александр Нестеров, Звучит грустно, но я просто не знаю как иначе запустить программу. Объясните, пожалуйста, как запустить мою программу без wine? Я правда не знаю и в интернете не смог найти.
Фархад Агамогланов, последний раз попытаюсь донести до вас мысль и объяснить.
1. Открываете консоль в Astra Linux
2. Удаляете нахр* wine!
3. Запускаете команду