How do I compile a PyQt script (.py) to a single standalone executable file for windows (.exe) and/or linux?

后端 未结 6 1452
时光说笑
时光说笑 2020-12-12 15:01

I started to fiddle with PyQt, and made a \"beautiful\" script from the pyqt whitepaper example app (pastebin)

It works perfectly in Windows and Linux (with qt envir

相关标签:
6条回答
  • 2020-12-12 15:27

    I am using pyinstaller

    pip install pyinstaller
    

    I don't know, but pyinstaller does't append sip.pyd. So, your need a PyQt5\sip.pyd. I recommend nice windows style qwindowvistastyle.dll.

    Make build.cmd file as:

    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
    

    ^ - new line in command file (.cmd, .bat)

    0 讨论(0)
  • 2020-12-12 15:27

    Since I am trying to use Qt because it is compiled

    You're defeating this benefit by using Python. Although the other answers give an introduction to the options for distributing Python code without requiring users to install Python themselves, Python is intended to be an interpreted language so there will be downsides to each of these options (ex. speed, program size, compatibility, etc...). They may or may not be deal-breakers to you.

    Your two other options are:

    1. Embrace the interpreted nature of Python: have people you're sharing your program with install Python and the dependencies. You can simplify this process significantly though. Ex. on Linux, use a package manager.
    2. Write your program in C++. Doing so would allow you to truly compile a single, native executable. This unfortunately means dropping Python, but there's reasons people still write code in less beautiful languages like C++ and it sounds like you might be running into some of them.
    0 讨论(0)
  • 2020-12-12 15:33

    After spending many weeks on this and trying all the alternatives - PyInstaller, py2exe, cx_freeze,... - I created my own library: https://build-system.fman.io/. It is based on PyInstaller but solves many of its common pain points. It also lets you create native installers on Windows, Mac and Linux.

    0 讨论(0)
  • 2020-12-12 15:36

    You may want to check out cx_freeze. It claims to create executables which are "cross platform and should work on any platform that Python itself works on."

    I came across it in exploring the moneyGuru package which uses PyQt. I downloaded the moneyguru.exe file to my Windows XP system, executed it, and it worked fine on Python 3.2.

    You can clone the hg repo from here to see how it.s done.

    0 讨论(0)
  • 2020-12-12 15:42

    if you want completelly create one stand alone executable, you can try this : http://www.pyinstaller.org/ . i feel it's better to create one stand alone executable than cx_freeze or py2exe (in my experience). and easy to use (full documentation available in the site).

    Update: As latest information from @SoursopTree and @LectureMaker, it now support python version 3.3 - 3.6.

    Update: pass --onefile argument if you want to create completely standalone .exe. in example :

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

    Update: Another interesting library which Author of the library claims that you could Create cross-platform desktop apps. its worth to try https://build-system.fman.io/

    0 讨论(0)
  • 2020-12-12 15:44

    There is a module named Py2EXE, which will do exactly what you want to do. It will convert the script into a .exe file to run on windows. I'm not sure about linux, but I bet there is a module out there somewhere. py2exe.com

    0 讨论(0)
提交回复
热议问题