flatcam/make_win.py

101 lines
4.1 KiB
Python

# ########################################################## ##
# 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(("locale", "lib/locale"))
include_files.append(("postprocessors", "lib/postprocessors"))
include_files.append(("share", "lib/share"))
include_files.append(("flatcamGUI/VisPyData", "lib/vispy"))
include_files.append(("config", "lib/config"))
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)]
)