20

I have a Python program uses Qt (PyQt4 in fact) and when I launch it from its main.py, I get a console window and the GUI window (on Windows, of course).

Then I compile my program with py2exe and main.exe is successfully created. However, if I run main.exe (this is what users of program will do) console window of Python still appears and all my debug text is stdout-ed to that window.

I want to hide cmd line window when my application is running and I want just my GUI to be visible to the user when executed from .exe file.

Is that possible?

ahmet alp balkan
  • 42,679
  • 38
  • 138
  • 214

4 Answers4

29

Yep, it is possible.

If I use

setup(console=['__main__.py'], options={"py2exe":{"includes":["sip"]}})

It creates a console app, however if I use

setup(windows=['__main__.py'], options={"py2exe":{"includes":["sip"]}})

it does not show console on .exe file. But output is dumped on main.exe.log file in the .exe folder. Be careful.

ahmet alp balkan
  • 42,679
  • 38
  • 138
  • 214
  • 2
    To suppress output you could redirect stdout as in http://coreygoldberg.blogspot.com/2009/05/python-redirect-or-turn-off-stdout-and.html or to some other logging facility. – ars Jul 18 '10 at 11:33
  • 1
    For me, the "sip" was not recognized, but I was able to build my exe and have it work by just using "setup(windows=['fileName.py'])" – Nick Williams Oct 03 '14 at 20:56
  • This solution doesn't work for me. This is my code `setup( options = {'py2exe': {'bundle_files': 1, 'compressed': True}}, console = ["main.pyw"], zipfile = None, )` – the_prole Nov 25 '14 at 21:08
6

I doubt this has an effect on py2exe, but it's related to the question. To run a python GUI on windows without the terminal, use pythonw.exe instead of python.exe. This should happen automatically if you end the filename with ".pyw".

robert
  • 33,242
  • 8
  • 53
  • 74
2

This might not be directly related to your question but i think it is worth trying.

You easily do so Using PyInstaller by using the following code.

pyinstaller -w myscript.py

Just as simple as that and every thing is settled!

0

The easiest way I found was to add -c when using the console to create the .exe.
If you type cmd into the file explorer, then type the following: python setup.py py2exe -c

My setup file was set up as shown below:

import distutils.core import setup
import py2exe
setup(windows=['myprogram.py'])
DuDa
  • 3,718
  • 4
  • 16
  • 36