Tkinterのexe化

2017/01/14

Python2.7.6, py2exe0.6.9

setup.pyのテスト
(いらんものを極力入れない)

# -*- coding: utf-8 -*-

from distutils.core import setup
import py2exe
import datetime

import sys,os
sys.argv.append('py2exe')

DIST_DIR = r'C:\Temp\dist\sample'
BUILD_DIR = r'C:\Temp\build'
DIST_FILE = 'test_window.py'


from _tkinter import TK_VERSION, TCL_VERSION
tcl_dll = 'tcl{0}.dll'.format(TCL_VERSION.replace('.',''))
tk_dll = 'tk{0}.dll'.format(TK_VERSION.replace('.',''))

py2exe.build_exe.py2exe.old_prepare = py2exe.build_exe.py2exe.plat_prepare
def new_prep(self):
  self.old_prepare()
  self.dlls_in_exedir.append(tcl_dll)
  self.dlls_in_exedir.append(tk_dll)
py2exe.build_exe.py2exe.plat_prepare = new_prep

py2exe_options = {
    'compressed': True,
    'optimize': 2,
    'bundle_files': 1,
    'dist_dir': DIST_DIR,
    'includes': ['Tkinter', 'Tkconstants'],
    'excludes' : ['_gtkagg','_ssl','_tkagg','bsddb','curses','doctest','email',
                'pdb', 'pyreadline','pywin.debugger','pywin.debugger.dbgcon',
                'pywin.dialogs',],
    'dll_excludes':['w9xpopen.exe'],
}

setup(
    options = {'build': {'build_base': BUILD_DIR},
               'py2exe': py2exe_options},
    windows = [{'script' : DIST_FILE}],
    zipfile = None,
)


[メモ]
普段使っているPySideなにのないウィンドウでも10MBになるので、Tkinterの方が軽量ではないかと考えた。
しかし、1つのファイルにする設定でビルドしても、tcl というフォルダができる。
なんとかこれをリソースに取り込み、1ファイルにすることを目指したけど、かなわなかった(半日が無駄に・・・)

とりあえず4つまでに抑えるとこまでで力尽きた
生成ファイル:test_window.exe,、tck85.dll、tk85.dll、tcl(フォルダ)

これで10MBあるから・・・、PySideでいいか。


Creating single EXE using py2exe for a Tkinter program
http://stackoverflow.com/questions/14975018/creating-single-exe-using-py2exe-for-a-tkinter-program

Python py2exe window showing (tkinter)
http://stackoverflow.com/questions/14566531/python-py2exe-window-showing-tkinter

How to correct TCL_LIBRARY and TK_LIBRARY with py2exe
http://stackoverflow.com/questions/12598279/how-to-correct-tcl-library-and-tk-library-with-py2exe