Skip to content
Takeshi HASEGAWA edited this page Nov 21, 2015 · 1 revision

IkaUI の Py2exe 方法

注意

  • 下記手順は「IkaLog への機能追加パッチを作成した方が、そのパッチが WinIkaLog (Py2exe生成されたIkaUI.exe)で動作するかを検証するための手順」という位置づけで用意したものです。
  • hasegaw が WinIkaLog として配布しているものは、下記の作業に加えて、ユーザの利便性を向上させるためのパッチや関連モジュールの不具合修正を行っています。このため下記手順を実施しても hasegaw が WinIkaLog として配布しているものとは違うものになります。
  • Apache Public License 2.0 で配布しているもののため下記手順で生成したバイナリの配布を禁止することはできませんが、ユーザー側の混乱を避けるため独自生成したバイナリは配布しないようにお願いします。

Py2exe すると何ができるの

手元の IkaLog レポジトリから Py2exe で Windows 向けEXEバイナリおよび配布物のディレクトリツリーを生成できます。

Py2exe のインストール

pip3 install py2exe

Py2exe 実行方法

> C:/IkaLog/Python34/Python.exe setup.py py2exe

成功すれば dist\ 以下に配布物ができています。

Py2exe 実行時の出力例サンプル

z:\hasegaw\work\IkaLogPY2EXE>c:\IkaLog\Python34\python.exe setup.py py2exe
running py2exe

  51 missing Modules
  ------------------
? Carbon                              imported from wx.lib.colourutils
? Cookie                              imported from requests.compat, tornado.htt
putil, tornado.web
? OpenSSL                             imported from requests.packages.urllib3.co
ntrib.pyopenssl
? PIL._imagingagg                     imported from PIL.ImageDraw
? PyQt4                               imported from PIL.ImageQt
? PyQt5                               imported from PIL.ImageQt
? PySide                              imported from PIL.ImageQt
? Queue                               imported from requests.packages.urllib3.co
nnectionpool, urllib3.connectionpool
? __pypy__                            imported from msgpack.fallback
? _abcoll                             imported from requests.packages.urllib3.pa
ckages.ordered_dict, urllib3.packages.ordered_dict
? _grabscreen                         imported from PIL.ImageGrab
? _imaging_gif                        imported from PIL.GifImagePlugin
? _util                               imported from PIL.ImageCms
? _yaml                               imported from yaml.cyaml
? backports                           imported from requests.packages.urllib3.pa
ckages.ssl_match_hostname, setuptools.ssl_support, tornado.netutil, urllib3.pack
ages.ssl_match_hostname
? blinker                             imported from oauthlib.signals
? certifi                             imported from requests.certs, tornado.netu
til, tornado.simple_httpclient
? cffi                                imported from PIL.Image, PIL.PyAccess
? cookielib                           imported from requests.compat
? jwt                                 imported from oauthlib.common, oauthlib.oa
uth1.rfc5849.signature, oauthlib.oauth2.rfc6749.clients.service_application
? monotime                            imported from tornado.platform.auto
? multiprocessing.SimpleQueue         imported from concurrent.futures.process
? ndg                                 imported from requests.packages.urllib3.co
ntrib.pyopenssl
? netbios                             imported from uuid
? packaging                           imported from pkg_resources
? pyasn1                              imported from requests.packages.urllib3.co
ntrib.pyopenssl
? qhue                                imported from ikalog.outputs.hue
? readline                            imported from cmd, code, pdb
? sets                                imported from numpy.distutils.command.buil
d_ext, numpy.distutils.fcompiler, numpy.distutils.misc_util
? setuptools_svn                      imported from setuptools.command.egg_info
? simplejson                          imported from requests.compat
? singledispatch                      imported from tornado.gen
? tornado.speedups                    imported from tornado.util
? urllib.getproxies                   imported from requests.compat
? urllib.pathname2url                 imported from setuptools.compat
? urllib.proxy_bypass                 imported from requests.compat
? urllib.quote                        imported from oauthlib.common, oauthlib.oa
uth2.rfc6749.utils, requests.compat
? urllib.quote_plus                   imported from requests.compat
? urllib.splittag                     imported from setuptools.compat
? urllib.unquote                      imported from oauthlib.common, requests.co
mpat
? urllib.unquote_plus                 imported from requests.compat
? urllib.url2pathname                 imported from setuptools.compat
? urllib.urlencode                    imported from oauthlib.common, oauthlib.oa
uth1.rfc5849.endpoints.authorization, requests.compat, requests.packages.urllib3
.request, slackweb.slackweb, tornado.httputil, tornado.web, urllib3.request
? win32api                            imported from distutils.msvccompiler, plat
form
? win32com                            imported from setuptools.sandbox
? win32con                            imported from distutils.msvccompiler, plat
form
? win32evtlog                         imported from logging.handlers
? win32evtlogutil                     imported from logging.handlers
? win32pdh                            imported from numpy.testing.utils
? win32wnet                           imported from uuid
? wincertstore                        imported from setuptools.ssl_support
Building 'dist\IkaUI.exe'.
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_flann300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_imgcodecs300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_objdetect300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\wx\wxbase30u_vc100.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_highgui300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_imgproc300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_video300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\tbb.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_shape300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_features2d300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\wx\wxbase30u_net_vc100.dll to dist

Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_ml300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_calib3d300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_core300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_videoio300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_photo300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\opencv_stitching300.dll to dist
Copy DLL c:\IkaLog\Python34\lib\site-packages\wx\wxmsw30u_core_vc100.dll to dist

Copy DLL c:\IkaLog\Python34\lib\site-packages\numpy\core\libiomp5md.dll to dist

z:\hasegaw\work\IkaLogPY2EXE>

Py2exe 時の注意点

  • たぶんIssue with python script after compiling with py2exe にハマりますので Py2exe する環境に入っているモジュールには細工しておかないと stat.ink との HTTPS 通信ができないと思います。
  • 原因がわかっていませんが import msgpack-python すると死にます。
    このため IkaLog ではフル Python 実装の umsgpack-python を使うようにしています。