Quit cmd while exe is running - cx-freeze

I have a .exe (PyQt5 + python3), the issue is that when I start the application, the cmd window is always initialized in the background.
I want that the cmd window is not initialized.
This is the code that I used to convert to .exe:
import cx_Freeze
from cx_Freeze import *
setup(
name = "interfaz",
options = {'build_exe': {'packages': ['cv2', 'numpy']}},
executables=[
Executable(
"interfaz.py",
)
]
)
This is an image showing the app:

According to the cx_Freeze documentation, in order to avoid that the command prompt appears briefly under Windows, you need to:
Freeze your application with the Win32GUI base [...]. This doesn’t use a console window, and reports errors in a dialog box.
Try thus to modify your setup script as follows:
import sys
from cx_Freeze import setup, Executable
# GUI applications require a different base on Windows (the default is for a console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(name="interfaz",
options={'build_exe': {'packages': ['cv2', 'numpy']}},
executables=[Executable("interfaz.py", base=base)])

Related

using "pythonw", ChromeDriverManager().install() is not working

from selenium.webdriver.chrome.service import Service as chromeService
from webdriver_manager.chrome import ChromeDriverManager
chromeServiceObj = chromeService(ChromeDriverManager().install())
this is my "test_install_driver.py" file.
and when i use "python" in a terminal(or command window), it works.
but using "pythonw", it doesn't.
I made a test code file.
And I was using the command below.
pythonw c:\test_install_driver.py
it seems like that the code doesn't install the web driver file.

How to use askopenfilename for .exe files?

I have a program with a GUI where you can search for Files.
I use the askopenfilename from Tkinter.
root = Tk()
root.filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
After I built it into a .exe file with pyinstaller, I wanted to start it.
But if I start the .exe file, I see a window for a short while and then it closes instantly.
It helped not to use root.mainloop.
What can I do?
Thanks
Your problem is most likely an issue in the imports, you didn't include any so all I can do is assume.
This is what I usually would use:
(Tested working on python 3.8.1 x64, pyinstaller 3.6)
from tkinter import *
from tkinter import filedialog
root = Tk()
root.withdraw()
root.filename = filedialog.askopenfilename(initialdir = "/",
title = "Select file",
filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
Made the .exe with pyinstaller.exe --onefile "path/to/script.py"

Using Pyinstaller for the joblib(parallelism) in Windows not running it

I made a python application using Joblib and created a windows package using Pyinstaller then my application just frozen and not working. Actually, it creates the 4 UI instance(4 because of the number of jobs is 4) and all four just froze.
Wondering how to bundle the pyqt5+joblib in windows, any help appreciated?
This is the command I used to create the bundle.
pyinstaller --onefile --windowed main.py
Without bundle it works well without any problem.
This is how my main method looks like.
if __name__ == "__main__":
import sys
# After adding this piece of code it just close the frozen app
if sys.argv[0][-4:] == '.exe':
setattr(sys, 'frozen', True)
multiprocessing.freeze_support()
app = QtWidgets.QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())

Writing out document in GUI executable using cx_freeze not working

I made an executable gui (with tkinter) file using cx_freeze. The executable has several buttons. When the user click the button, the calculation should work and then it will write out an xlsx file.
Everything went good when I make the executable, there was no error. But when I click the button, it seems like the calculation works (since it was loading), but then it does not write out the xlsx file.
I don't know what went wrong. Anyone can help me?
Here's the setup.py file:
import sys
from cx_Freeze import setup, Executable
import os
import tkinter
base = None
if sys.platform == 'win32':
base = "Win32GUI"
executables = [Executable("gui.py", base=base)]
packages = ["tkinter", 'xlsxwriter', 'matplotlib']
options = {
'build_exe': {
'includes': ["os", "tkinter", 'numpy.core._methods', 'numpy.lib.format', 'xlrd', 'scipy', 'pandas'],
'include_files': [r"C:\Users\USERNAME\AppData\Local\Programs\Python\Python36-32\DLLs\tcl86t.dll",
r"C:\Users\USERNAME\AppData\Local\Programs\Python\Python36-32\DLLs\tk86t.dll"]
},
}
os.environ['TCL_LIBRARY'] = r'C:\Users\USERNAME\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\USERNAME\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'
setup(
name="Tool",
version="1.0",
description="Tool prototype for calculating",
options=options,
executables=executables
)
I've solved the problem.
What i did was to change the base in setup.py to : base = None
and I installed the xlsxwriter by following this thread: ImportError: No module named 'xlsxwriter': Error in bamboo
After this, I encountered another problem:
No module named: scipy.sparse.csgraph._validation
but I simply add this to the 'includes': ['scipy.sparse.csgraph._validation', ...]
now everything works perfectly.
I hope this helps anyone who has the same problem.

GUI module not found

I'm trying to run the following code:
# To use interactive plots (mouse clicks, zooming, panning) we use the nbagg back end. We want our graphs
# to be embedded in the notebook, inline mode, this combination is defined by the magic "%matplotlib notebook".
%matplotlib notebook
import SimpleITK as sitk
%run update_path_to_download_script
from downloaddata import fetch_data as fdata
import gui
# Using an external viewer (ITK-SNAP or 3D Slicer) we identified a visually appealing window-level setting
T1_WINDOW_LEVEL = (1050,500)
When I run it in spider 3.2.6 I get:
ModuleNotFoundError: No module named 'gui'
Any help would be appreciated.
Code source: http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/Python_html/30_Segmentation_Region_Growing.html
This isn't a spyder issue.
The gui module is part of the notebooks repository. Either clone the repository or just download this file. Same goes for the downloaddata module.

Resources