From 5454e801bf7be67328537885e8c7655a4993c5c5 Mon Sep 17 00:00:00 2001 From: Jace Browning Date: Thu, 25 Aug 2016 20:41:07 -0400 Subject: [PATCH] Add PyInstaller to build executables --- {{cookiecutter.project_name}}/.gitignore | 1 + {{cookiecutter.project_name}}/Makefile | 42 +++++++++++++------ .../{{cookiecutter.package_name}}/__main__.py | 13 ++++++ 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 {{cookiecutter.project_name}}/{{cookiecutter.package_name}}/__main__.py diff --git a/{{cookiecutter.project_name}}/.gitignore b/{{cookiecutter.project_name}}/.gitignore index c736c5b..4b08c89 100644 --- a/{{cookiecutter.project_name}}/.gitignore +++ b/{{cookiecutter.project_name}}/.gitignore @@ -40,6 +40,7 @@ Icon* *.tmp # Build and release directories +*.spec /build /dist diff --git a/{{cookiecutter.project_name}}/Makefile b/{{cookiecutter.project_name}}/Makefile index ba3f1e8..333a8c0 100644 --- a/{{cookiecutter.project_name}}/Makefile +++ b/{{cookiecutter.project_name}}/Makefile @@ -61,18 +61,6 @@ endif PYTHON := $(BIN_)python PIP := $(BIN_)pip EASY_INSTALL := $(BIN_)easy_install -RST2HTML := $(PYTHON) $(BIN_)rst2html.py -PDOC := $(PYTHON) $(BIN_)pdoc -MKDOCS := $(BIN_)mkdocs -PEP8 := $(BIN_)pep8 -PEP8RADIUS := $(BIN_)pep8radius -PEP257 := $(BIN_)pep257 -PYLINT := $(BIN_)pylint -PYREVERSE := $(BIN_)pyreverse -NOSE := $(BIN_)nosetests -PYTEST := $(BIN_)py.test -COVERAGE := $(BIN_)coverage -COVERAGE_SPACE := $(BIN_)coverage.space SNIFFER := $(BIN_)sniffer HONCHO := PYTHONPATH=$(PWD) $(ACTIVATE) && $(BIN_)honcho @@ -135,6 +123,11 @@ endif # CHECKS ####################################################################### +PEP8 := $(BIN_)pep8 +PEP8RADIUS := $(BIN_)pep8radius +PEP257 := $(BIN_)pep257 +PYLINT := $(BIN_)pylint + .PHONY: check check: pep8 pep257 pylint ## Run linters and static analysis @@ -156,6 +149,14 @@ fix: depends # TESTS ######################################################################## +{% if cookiecutter.test_runner == "nose" -%} +NOSE := $(BIN_)nosetests +{%- elif cookiecutter.test_runner == "pytest" -%} +PYTEST := $(BIN_)py.test +{%- endif %} +COVERAGE := $(BIN_)coverage +COVERAGE_SPACE := $(BIN_)coverage.space + RANDOM_SEED ?= $(shell date +%s) {% if cookiecutter.test_runner == "nose" %} NOSE_OPTS := --with-doctest --with-cov --cov=$(PACKAGE) --cov-report=html --cov-report=term-missing @@ -239,6 +240,10 @@ read-coverage: # DOCUMENTATION ################################################################ +PYREVERSE := $(BIN_)pyreverse +PDOC := $(PYTHON) $(BIN_)pdoc +MKDOCS := $(BIN_)mkdocs + PDOC_INDEX := docs/apidocs/$(PACKAGE)/index.html MKDOCS_INDEX := site/index.html @@ -272,6 +277,19 @@ mkdocs-live: mkdocs ## Launch and continuously rebuild the mkdocs site eval "sleep 3; open http://127.0.0.1:8000" & $(MKDOCS) serve +# BUILD ######################################################################## + +PYINSTALLER := $(BIN_)pyinstaller +PYINSTALLER_MAKESPEC := $(BIN_)pyi-makespec + +.PHONY: exe +exe: depends $(PROJECT).spec + # For framework/shared support: https://github.com/yyuu/pyenv/wiki + $(PYINSTALLER) $(PROJECT).spec --noconfirm --clean + +$(PROJECT).spec: + $(PYINSTALLER_MAKESPEC) $(PACKAGE)/__main__.py --noupx --onefile --windowed --name=$(PROJECT) + # RELEASE ###################################################################### .PHONY: register-test diff --git a/{{cookiecutter.project_name}}/{{cookiecutter.package_name}}/__main__.py b/{{cookiecutter.project_name}}/{{cookiecutter.package_name}}/__main__.py new file mode 100644 index 0000000..ce74091 --- /dev/null +++ b/{{cookiecutter.project_name}}/{{cookiecutter.package_name}}/__main__.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python + +"""Sample package entry point.""" + +import sys + + +def main(): + sys.stdout.write("Hello, world!\n") + + +if __name__ == '__main__': + main()