Jak skompilować skrypt PyQt (. py) do pojedynczego samodzielnego pliku wykonywalnego dla systemu windows (.exe) i / lub linux?

Zacząłem bawić się PyQt i zrobiłem "piękny" skrypt z przykładowej aplikacji pyqt whitepaper (pastebin )

Działa doskonale w systemach Windows i Linux(ze środowiskiem qt już zainstalowanym na obu).

Teraz moje pytanie brzmi: ponieważ próbuję używać Qt, ponieważ jest skompilowany (przynajmniej czysty Stary Qt oparty na C++), Jak mogę skompilować niektóre .plik exe do uruchomienia go w systemie Windows lub samodzielny plik wykonywalny dla Linuksa.

Chodzi o to, że chcę program ma być skompilowany, ze względu na szybkość i przenośność, zamiast interpretowany ze źródła, co wymagałoby wcześniejszej konfiguracji na dowolnym komputerze. Jednym z celów jest na przykład wysyłanie małych skryptów gui za pośrednictwem poczty e-mail do współpracowników, którzy w ogóle nie są programistami.

Author: warship, 2011-05-04

6 answers

Jeśli chcesz utworzyć jeden samodzielny plik wykonywalny, możesz spróbować tego : http://www.pyinstaller.org /. wydaje mi się, że lepiej jest stworzyć jeden samodzielny plik wykonywalny niż cx_freeze czy py2exe (z mojego doświadczenia). i łatwy w obsłudze(pełna dokumentacja dostępna na stronie).

Update: Jako najnowsze informacje z @SoursopTree i @LectureMaker, obsługuje teraz python w wersji 3.3 - 3.6.

Update: pass -- onefile argument jeśli chcesz utworzyć całkowicie samodzielne .exe. w przykładzie:

pyinstaller.exe --onefile --windowed app.py

Update: kolejna ciekawa biblioteka, której autor twierdzi, że można tworzyć wieloplatformowe aplikacje desktopowe. warto spróbować https://build-system.fman.io/

 47
Author: Yuda Prawira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 06:55:37

Po spędzeniu wielu tygodni na tym i wypróbowaniu wszystkich alternatyw-PyInstaller, py2exe, cx_freeze,... - Stworzyłem własną bibliotekę: https://build-system.fman.io / . opiera się na PyInstaller, ale rozwiązuje wiele wspólnych punktów bólu. Umożliwia również tworzenie natywnych instalatorów w systemach Windows, Mac i Linux.

 22
Author: Michael Herrmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-02 07:01:38

Możesz sprawdzić cx_freeze . Twierdzi, że tworzy pliki wykonywalne, które są "międzyplatformowe i powinny działać na każdej platformie, na której działa sam Python."

Natknąłem się na niego podczas eksploracji pakietu moneyGuru, który używa PyQt. Ściągnąłem moneyguru.plik exe do mojego systemu Windows XP, wykonał go i działał dobrze na Pythonie 3.2.

Możesz sklonować repo hg z tutaj , aby zobaczyć jak to działa.gotowe.

 4
Author: Don O'Donnell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-05 01:57:20

Istnieje moduł o nazwie Py2EXE, który zrobi dokładnie to, co chcesz zrobić. Przekonwertuje skrypt na .plik exe do uruchomienia w systemie windows. Nie jestem pewien co do Linuksa, ale założę się, że gdzieś tam jest moduł. py2exe.com

 0
Author: Matt Habel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 19:36:02

Używam pyinstaller

pip install pyinstaller

Nie wiem, ale pyinstaller nie dołącza sip.pyd. Więc potrzebujesz PyQt5 \ sip.pyd . Polecam fajny styl windows qwindowvistastyle.dll .

Make build.cmd Plik jako:

pyinstaller --onefile --clean ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\sip.pyd;PyQt5" ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\Qt\plugins\styles\qwindowsvistastyle.dll;PyQt5\Qt\plugins\styles" ^
    .\main.py

^ - nowa linia w pliku polecenia (.cmd,bat)

 0
Author: Quazer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-12 18:07:39

Ponieważ próbuję użyć Qt, ponieważ jest skompilowany

Pokonujesz tę korzyść używając Pythona. Chociaż inne odpowiedzi dają wprowadzenie do opcji dystrybucji kodu Pythona bez konieczności instalowania samego Pythona, Python ma być językiem interpretowanym, więc każda z tych opcji będzie miała wady (np. szybkość, rozmiar programu, kompatybilność itp...). Mogą, ale nie muszą być dla Ciebie pośrednikami.

Twoje dwie inne opcje to:

  1. Przyjmij interpretowaną naturę Pythona: miej ludzi, z którymi udostępniasz swój program, zainstaluj Pythona i zależności. Możesz jednak znacznie uprościć ten proces. Ex. w systemie Linux użyj menedżera pakietów.
  2. napisz swój program w C++. Dzięki temu można naprawdę skompilować pojedynczy, natywny plik wykonywalny. To niestety oznacza porzucenie Pythona, ale są powody, dla których ludzie nadal piszą kod w mniej pięknych językach, takich jak C++ i brzmi jak ty może na niektórych wpadają.
 -1
Author: Cameron Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-02 04:50:23