I've been having this problem with including things into my cx_Freeze script, what im trying to do is include easygui and sys, as i use them in my program. Any help would be appreciated!
Heres the code:
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 = "ProgramGUI",
version = "0.1",
description = "My GUI application!",
options = {"build_exe": build_exe_options},
executables = [Executable("ProgramGUI.py", base=base)])
So really all i need to know is how to incorparate Includes[ "sys", "easyGUI" ] Into the setup script :D
Seriously, I think you just miss a small thing to tell cx_freeze to import easy_gui:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {
"packages": ["os", "sys"],
"excludes": ["tkinter"],
"includes": ["easy_gui"] # <-- Include easy_gui
}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "ProgramGUI",
version = "0.1",
description = "My GUI application!",
options = {"build_exe": build_exe_options},
executables = [Executable("ProgramGUI.py", base=base)])
Related
I want to change a python script into an executable file.
The compilation is proceeding correctly and the executable works correctly on my computer.
The problem is that when I export the exe.win32-3.8 directory to another computer, the executable doesn't works. The execution window opens and closes immediately. The IE windows doesn't opens.
here is my setup.py :
from cx_Freeze import setup, Executable
# On appelle la fonction setup
setup(
name = "CampaignRecovery",
version = "0.1",
description = "Ce programme recupère les campagnes depuis Opoci",
executables = [Executable("CampaignRecovery.py")],
)
And my source code :
from selenium import webdriver
from selenium.webdriver.ie.options import Options
ieOptions = Options()
ieOptions.ignore_protected_mode_settings = True
browser = webdriver.Ie(options=ieOptions)
Could you, please help me ?
Regards
This is my setup. not guarantee gonna work on your case, just to make sure you have python installed on target machine for testing purposes. and run it through CMD. from CMD you will able to tell what's wrong
import cx_Freeze
import sys
import os
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
print(os.environ['TCL_LIBRARY'],os.environ['TK_LIBRARY'])
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
syspath = r"C:\Python\DLLs"
buildOptions = dict(
packages=["tkinter","pandas","numpy"],
excludes=[],
include_files=[('tcl86t.dll', os.path.join('lib', 'tcl86t.dll')),('tk86t.dll', os.path.join('lib', 'tk86t.dll'))]
)
executables = [cx_Freeze.Executable("[YOUR APP].py", base=base, icon="hitek.ico")]
cx_Freeze.setup(
name = "YOUR APP",
options = dict(build_exe=buildOptions),
version = "0.02",
description = "YOUR APP",
executables = executables
)
After I did the convert to exe, ssh(paramiko) function does not work anymore. It does not connect to the device.
I have included paramiko and socket packages. Any Idea?
it is working in with non-converted version.
setup.py file
import cx_Freeze
from cx_Freeze import setup, Executable
import os
import sys
includes = []
include_files = ["C:\\Python36-32\DLLs\\tcl86t.dll",
"C:\\Python36-32\DLLs\\tk86t.dll",
"C:\\Gustavo\\PyCharmPortable\\new\\cpass.ico",
"C:\\Gustavo\\PyCharmPortable\\new\\py2.py",
"C:\\Gustavo\\PyCharmPortable\\new\\py3.py",
"C:\\Gustavo\\PyCharmPortable\\new\\tn.py",
"C:\\Gustavo\\PyCharmPortable\\new\\file1.csv"]
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = "C:\\Python36-32\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Python36-32\\tcl\\tk8.6"
base = 'Win32GUI' if sys.platform == 'win32' else None
setup(name='Password Change', version='0.1', description='Password Change',
options={"build_exe": {"packages": ["tkinter","paramiko","PIL","socket","telnetlib"], "includes": includes, "include_files": include_files}},
executables=[Executable('cp.py', base=base)])
try including the socket.py/socketserver.py and the _multiprocessing.pyd/_tkinter.pyd/_socket.pyd, this is what worked for me.
include_files = [
"C:\\Python36-32\DLLs\\tcl86t.dll",
"C:\\Python36-32\DLLs\\tk86t.dll",
"Python36/Lib/socket.py",
"Python36/Lib/socketserver.py",
"Python36/DLLs/_multiprocessing.pyd",
"Python36/DLLs/_tkinter.pyd",
"Python36/DLLs/_socket.pyd",
"C:\\Gustavo\\PyCharmPortable\\new\\cpass.ico",
"C:\\Gustavo\\PyCharmPortable\\new\\py2.py",
"C:\\Gustavo\\PyCharmPortable\\new\\py3.py",
"C:\\Gustavo\\PyCharmPortable\\new\\tn.py",
"C:\\Gustavo\\PyCharmPortable\\new\\file1.csv",
I'm trying to run cx_freeze with a plataform-agnostic setup.py file, i can't figure how to add the compiled files (.pym, .so) into the executable
DataProcessor is a python module compiled externally by Cython ... but i don't know how to include it in cx_freeze executable beacause the absolute path depends upon plataform and python version. So how can i handle that.
the executable is compiled but the external module is not include so when i ran the application throws an error that DLL is not loaded or in case of MacOS says ModuleNotFoundError: No module named 'DataProcessor'
EDIT: i have seen an error on the original setup.py, correcting this error cx_freeze shows this error
cx_Freeze.freezer.ConfigError: cannot find file/directory named DataProcessor
EDIT2: as suggested by #mgracer tried to put in in includes section but no sucess cx_freeze shows
ImportError: No module named 'DataProcessor'
so what i can i do to maintain my setup.py plataform-agnostic.
This is what i have until now
from Cython.Build import cythonize
from cx_Freeze import setup, Executable
import sys
import os.path
# Windows hack
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
# Windows hack
includes = []
excludes = ['tkinter']
packages = ['openpyxl', 'sqlite3', 're', 'collections', 'os']
include_files = ['DataProcessor']
dll_excludes = []
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {
"excludes": excludes,
"includes": includes,
"packages": packages,
"include_files": include_files
}
setup(
name="analizador",
version="0.1",
description="Foo bar",
options={"build_exe": build_exe_options},
ext_modules=cythonize("DataProcessor.pyx"),
executables=[Executable("analisis.py", base=base)]
)
i solved it extending a little the setup.py script
resulted in this:
from Cython.Build import cythonize
from cx_Freeze import setup, Executable
import sys
import os
import platform
# hack para correr en windows
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
# hack
setup(ext_modules=cythonize("DataProcessor.pyx"))
# rutina detect the files
arch = platform.machine()
temp = platform.python_version_tuple()
pyver = '%s.%s' % (temp[0], temp[1])
pname = None
pext = ".so"
tfiles = ()
if sys.platform == 'darwin':
temp = platform.mac_ver()
tver = '.'.join(temp[0].split('.')[:2])
ptemp = 'macosx'
pname = '%s-%s-%s' % (ptemp, tver, temp[2])
if sys.platform == 'win32':
ptemp = 'win'
pname = '%s-%s' % (ptemp, arch.lower())
pext = '.pym'
libpath = os.path.join('build', ('lib.%s-%s' % (pname, pyver)))
afiles = os.listdir(libpath)
for file in afiles:
afile = file.split('.')
tfiles = tfiles + ((os.path.join(libpath, file), '.'.join([afile[0],
afile[2]])),)
# end
includes = []
excludes = ['tkinter', 'PyQt4']
packages = ['openpyxl', 'sqlite3', 're', 'collections', 'os']
dll_excludes = []
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {
"excludes": excludes,
"includes": includes,
"packages": packages,
"include_files": tfiles
}
setup(
name="foo",
version="0.1",
description="Foobar",
options={"build_exe": build_exe_options},
executables=[Executable("analisis.py", base=base)]
)
I am currently trying to freeze some python code using twisted with cx_freeze.
I have this in my python file Main.py :
print('Start')
import twisted.internet
input('End')
and this in setup.py file :
import sys
from cx_Freeze import setup, Executable
includes = ["twisted.internet", "twisted.internet.protocol", "pkg_resources"]
excludes = []
packages = []
namespace_packages = ["zope"]
build_exe_options = {"packages": packages, "excludes": excludes, "includes": includes, "namespace_packages": namespace_packages, "append_script_to_exe":True}
base = None
#if sys.platform == "win32":
# base = "Win32GUI"
setup( name = "xxx",
version = "1.0",
author = "xxx",
author_email = "xxx",
description = "xxx",
options = {"build_exe": build_exe_options},
executables = [Executable("Main.py", base=base, icon = None)])
I keep getting a run time error R6034 when I run my compiled program. Someone knows why ?
In the end, I used a workaround. I figured out that the file zope.interface._zope_interface_coptimizations was the root of the issue (it fails to load) so I excluded it in my setup.py file :
excludes = ["zope.interface._zope_interface_coptimizations"]
It now works well but the initial problem is not solved and I fear I would need this package at some point.
I am having problems freezing a programm of mine. I narrowed it down to the scipy module. The porgramm I am trying to freeze is:
from scipy import signal
signal.hann(1000)
My setup script is:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "Some name",
version = "1.0",
author="My name",
description = "My GUI application!",
options = {"build_exe": build_exe_options},
executables = [Executable("Script_Name.py", base=base)])
# ^CHANGE THIS NAME!!!
Here is a picture of the error message. I also tried including scipy.signal in the setup file as
build_exe_options = {"includes":"scipy.signal"}
but it didn't do any good. Please help me.
I had a similar problem which could be solved by making sure that:
1 The build directory contains a file named _ufunc.pyd (instead of scipy.special._ufuncs.pyd as mentioned above). You can achieve this by specifying the build_exe_options:
build_exe_options = { 'packages': ['scipy'],
"include_files": [('path2python\\Lib\\site-packages\\scipy\\special\\_ufuncs.pyd','_ufuncs.pyd')]}
2 Making sure that all dlls used by ufunc.pyd are also in the build directory. In my case libifcoremd.dll adn libmmd.dll were failing. You can check this with dependencywalker
I hope this helps you out.