############################################################ # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 12/20/2018 # # MIT Licence # # # # Creates a portable copy of FlatCAM, including Python # # itself and all dependencies. # # # # This is not an aid to install FlatCAM from source on # # Windows platforms. It is only useful when FlatCAM is up # # and running and ready to be packaged. # ############################################################ ############################################################ # File Modified (major mod): Marius Adrian Stanciu # # Date: 3/10/2019 # ############################################################ # Files not needed: Qt, tk.dll, tcl.dll, tk/, tcl/, vtk/, # scipy.lib.lapack.flapack.pyd, scipy.lib.blas.fblas.pyd, # numpy.core._dotblas.pyd, scipy.sparse.sparsetools._bsr.pyd, # scipy.sparse.sparsetools._csr.pyd, scipy.sparse.sparsetools._csc.pyd, # scipy.sparse.sparsetools._coo.pyd import os, site, sys, platform from cx_Freeze import setup, Executable # this is done to solve the tkinter not being found 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') # Get the site-package folder, not everybody will install # Python into C:\PythonXX site_dir = site.getsitepackages()[1] include_files = [] include_files.append((os.path.join(site_dir, "shapely"), "shapely")) include_files.append((os.path.join(site_dir, "svg"), "svg")) include_files.append((os.path.join(site_dir, "svg/path"), "svg")) include_files.append((os.path.join(site_dir, "vispy"), "vispy")) include_files.append((os.path.join(site_dir, "vispy/app"), "vispy/app")) include_files.append((os.path.join(site_dir, "vispy/app/backends"), "vispy/app/backends")) include_files.append((os.path.join(site_dir, "rtree"), "rtree")) if platform.architecture()[0] == '64bit': include_files.append((os.path.join(site_dir, "google"), "google")) include_files.append((os.path.join(site_dir, "google/protobuf"), "google/protobuf")) include_files.append((os.path.join(site_dir, "ortools"), "ortools")) include_files.append(("share", "lib/share")) include_files.append(("postprocessors", "lib/postprocessors")) include_files.append(("README.md", "README.md")) include_files.append(("LICENSE", "LICENSE")) base = None # Lets not open the console while running the app if sys.platform == "win32": base = "Win32GUI" if platform.architecture()[0] == '64bit': buildOptions = dict( include_files=include_files, excludes=['scipy','pytz'], # packages=['OpenGL','numpy','vispy','ortools','google'] # packages=['numpy','google', 'rasterio'] # works for Python 3.7 packages = ['opengl', 'numpy', 'google', 'rasterio'] # works for Python 3.6.5 and Python 3.7.1 ) else: buildOptions = dict( include_files=include_files, excludes=['scipy', 'pytz'], # packages=['OpenGL','numpy','vispy','ortools','google'] # packages=['numpy', 'rasterio'] # works for Python 3.7 packages = ['opengl', 'numpy', 'rasterio'] # works for Python 3.6.5 and Python 3.7.1 ) print("INCLUDE_FILES", include_files) # execfile('clean.py') setup( name="FlatCAM", author="Juan Pablo Caram", version="8.9", description="FlatCAM: 2D Computer Aided PCB Manufacturing", options=dict(build_exe=buildOptions), executables=[Executable("FlatCAM.py", icon='share/flatcam_icon48.ico', base=base)] )