How to build msi extension with setup.py using cx freeze - python

I wouldlike to create a .msi extension for my python script. With this file I wouldike to add possibility to the users to install python and install all depedencies of the project. I actually don't understand how can I do this. Here it's my setup.py
setup.py :
import os
import sys
from cx_Freeze import setup, Executable
os.system('virtualenv sample/venv && sample\\venv\\Scripts\\activate && pip install -r requirements.txt')
setup(name = "Myscript",
version = "0.1",
description = "My GUI application!",
executables = [Executable("main.py", base=base)])

Cxfreeze will automatically build all the dependencies inlcuding python and any other modules you have imported in your script. If you get any module not found error, you have to manually include it in the packages. Any files like images used needs to be explicitly included. Here is an example code for your reference -
from cx_Freeze import setup, Executable
build_exe_options = {'packages': ['os', 'tkinter', 'matplotlib.backends.backend_svg', 'subprocess'],
'namespace_packages': ['mpl_toolkits'],
'include_files':['input3.json', 'SF.xlsx', 'SF logo.ico', 'Operative Temperature.pkl',
'Rect_icon.png', 'Soltissim logo.png', 'SF full logo.jpg', 'IES logo.jpg']}
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
setup ( name = 'Soltissim',
version = '2',
description = 'SF GUI',
options = {'build_exe': build_exe_options},
executables = [Executable('Soltissim.py', base=base, icon='SF logo.ico])

Related

Can't find exe files using cx_freeze

I'm new to Python and I'm running Python 3.6. Trying to build an executable using cx_freeze and the code below in a file named "setup.py". I put the python script for the program and the icon file in the python main directory folder. When I type "python setup.py build" into the command prompt it says "running build" and then immediately generates a new command prompt. No errors are given but afterward I can't find the exe anywhere. What am I doing wrong? Am I searching for the exe files in the wrong place or is the build failing without giving an error message?
import cx_Freezefrom cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = ["numpy","tkinter"], excludes = [],includes = ["numpy","tkinter"],
include_files = ["battleship.ico"])
import sys
base = 'Win32GUI' if sys.platform=='win32' else None
executables = [
Executable('battleship.py', base=base)
]
setup(
name='Battleship',
version = '1.0',
description = 'A PvC Battleship Game',
options = dict(build_exe = buildOptions),
executables = executables
)
when you use py2exe
try this
import sys
try:
import py2exe
except:
raw_input('Please install py2exe first...')
sys.exit(-1)
from distutils.core import setup
import shutil
sys.argv.append('py2exe')
setup(
options={
'py2exe': {'bundle_files': 1, 'compressed': True }
},
console=[
{'script': "script.py"}
],
zipfile=None,
)
Note : remplace "script.py" with your python script and run this script like this
python exe.py

cx_Freeze: Python error in main script. Python 3.6 + cx_Freeze

I have problems with compilation python 3.6 to exe using cx_Freeze-5.0.1-cp36-cp36m-win32.whl, help me please.
I have installed Cx-freeze from http://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze
Then i started cmd and run this command:
python setup.py build
setup.py file is below:
import sys
from cx_Freeze import setup, Executable
setup(
name = "Check Telemetry",
version = "0.1",
description = "Check Telemetry",
executables = [Executable("excel_to_sqlite_xlrd-light.py", base = "console")])
Then i have something like this:
But if i run my .exe file i have problem below:
Screenshots with lines that have mistakes below:
Have you got any ideas?
Thank you!
seems that the program doesn't find the dependencies so add this (you have to add the missing dependencies (in this example i put os):
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
and then:
setup( name = "Check Telemetry",
version = "0.1",
description = "Check Telemetry",
options = {"build_exe": build_exe_options},
executables = [Executable("excel_to_sqlite_xlrd-light.py", base = "console")])

Python3 cx_Freeze error 'no module named gi'

I am trying to use cx_Freeze with a python3 programme I have written which uses Gtk. I ran cxfreeze-quickstart and then python setup.py build using the setup.py file created for me. However, I got this error: ImportError: No module named 'gi'.
This is my setup.py file:
from cx_Freeze import setup, Executable
buildOptions = dict(packages = [], excludes = [])
import sys
base = 'Win32GUI' if sys.platform=='win32' else None
executables = [
Executable('bio_gtk_programme.py', base=base)
]
setup(name='Bio Programme',
version = '1.0',
description = 'Bio Gtk',
options = dict(build_exe = buildOptions),
executables = executables)
Do I need to include 'gi' in packages = [] or add anything to the hooks.py file?
I've also tried this with py2exe on Windows, and I get the same ImportError...

How to use cx_freeze with pyautoit?

I want to create a cx_freeze executable from my windows application that use "pyautoit" module.
pip install -U pyautoit
This is my example code:
main.py
import autoit
autoit.run("notepad.exe")
autoit.win_wait_active("[CLASS:Notepad]", 3)
autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}")
autoit.win_close("[CLASS:Notepad]")
autoit.control_click("[Class:#32770]", "Button2")
setup.py
import sys
from cx_Freeze import setup, Executable
build_exe_options = {
"packages": ["autoit"],
"excludes": []
}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name = "AutoItSample",
version = "0.1",
description = "Automate Notepad Editor",
options = {"build_exe": build_exe_options},
executables = [Executable("main.py", base=base)],
)
And I created the build with this command inside my project folder.
python setup.py build
This module use a .dll file included inside the module folder.
autoit
lib
AutoItX3.dll
autoit.py
...
But cx_freeze doesn't include this .dll in the library.zip archive.
I tried to include the lib folder manually inside the library.zip archive.
But I've got the same error.
http://pix.toile-libre.org/upload/original/1428496271.png
What should I do to make it work?
Try using the zip_includes option in your setup.py file:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {
"packages": ["autoit"],
"excludes": [],
"zip_includes": ['AutoITX3.dll']
}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name = "AutoItSample",
version = "0.1",
description = "Automate Notepad Editor",
options = {"build_exe": build_exe_options},
executables = [Executable("main.py", base=base)],
)

What is my next step using cx_Freeze?

Ok so I have python 3.2 installed and I have cx_Freexe 4.2.3 installed.
I have a folder called Python stuff. In this folder there are 2 files.
setup.py and holg.py (my application)
Here is my setup.py:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "holgame",
version = "0.1",
description = "My GUI application!",
options = {"build_exe": build_exe_options},
executables = [Executable("holg.py", base=base)])
The next step I have been doing is Run > cmd:
python setup.py build
what I get is:
'python' is not recognized as an internal or external command, operable program or batch file.
I am only a beginner so I need clear steps. Maybe my programs should be in a different folder or something, I can't really be sure. Does anyone know what the problem is? Thanks
You either need to put Python on the Windows path, or you need to use an explicit path to python. Try:
$ \Python32\Python setup.py build
Here are some good instructions for getting Python installed on your Windows machine: https://openhatch.org/wiki/Boston_Python_Workshop_5/Friday/Windows_set_up_Python
You will first need to cd to the directory containing your code and setup.py. You should find a Windows command prompt tutorial to help with some of this basic stuff.

Categories