絖綛 N@i.jp  昨日:00018063
 今日:00020345
 総計:00060396
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:10/01 12:07


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

QuickIRを py2exeでWindowsのEXEファイルにする(3)

やっと本題の QuickIR のEXE化です


11. QuickIR をEXEファイル化する

 長い前振りでごめんなさい。やっと本題です。いよいよ QuickIR を py2exe で EXEファイルに変換してみます。と言っても、ここまで来ればゴールはすぐソコ。QuickIR用に py2exe の setupスクリプトを作成すれば良いだけです。
 QuickIR用の setupスクリプト"py2exe_setup.py"は以下になります。

# -*- coding: utf-8 -*-
"""
This is a py2exe setup script

Usage:
    python py2exe_setup.py py2exe
"""
from distutils.core import setup
import py2exe
import os
import sys


option = {
    'compressed': True,
    'optimize': 2,
    'bundle_files': 2,
    'includes': ['irkit', 'resolve_irkit', 'pybonjour', 'tkinter'],
    'excludes': [],
    'packages': []
}


setup(
    name='QuickIR',
    version='1.0.8',
    options={
        'py2exe': option
    },
    windows=[
        {'script': 'QuickIR.py',
         'icon_resources': [(1, 'app32bit.ico')]
        }
    ],
    data_files=[
        ('images',
         [r'images¥file_add.gif',
          r'images¥file_delete.gif',
          r'images¥file_post.gif',
          r'images¥file_rename.gif',
          r'images¥folder_add.gif',
          r'images¥folder_delete.gif',
          r'images¥folder_rename.gif',
          r'images¥IRKit.gif'])
    ],
    zipfile=None
)

 cx_freezeのときに使用したアイコンファイルには16色、256色のアイコンも含まれていたため、py2exe が以下のようにエラーを吐いてしまいました。どうやらアイコン画像数が多すぎると言っているようです。そこで、32bitカラーのアイコンだけにしたアイコンファイル("app32bit.ico")を作成しました。

C:¥> C:¥Python34¥python py2exe_setup.py py2exe
running py2exe

  1 missing Modules
  ------------------
? readline                            imported from cmd, code, pdb
Building 'dist¥QuickIR.exe'.
Traceback (most recent call last):
  File "py2exe_setup.py", line 45, in 
    zipfile=None
  File "C:¥Python34¥lib¥distutils¥core.py", line 148, in setup
    dist.run_commands()
  File "C:¥Python34¥lib¥distutils¥dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "C:¥Python34¥lib¥distutils¥dist.py", line 974, in run_command
    cmd_obj.run()
  File "C:¥Python34¥lib¥site-packages¥py2exe¥distutils_buildexe.py", line 188, in run
    self._run()
  File "C:¥Python34¥lib¥site-packages¥py2exe¥distutils_buildexe.py", line 268, in _run
    builder.build()
  File "C:¥Python34¥lib¥site-packages¥py2exe¥runtime.py", line 234, in build
    self.build_exe(target, exe_path, options.libname)
  File "C:¥Python34¥lib¥site-packages¥py2exe¥runtime.py", line 371, in build_exe
    for res_type, res_name, res_data in BuildIcons(getattr(target, "icon_resources", ())):
  File "C:¥Python34¥lib¥site-packages¥py2exe¥icons.py", line 124, in BuildIcons
    grp_header = CreateGrpIconDirHeader(header, id_generator)
  File "C:¥Python34¥lib¥site-packages¥py2exe¥icons.py", line 90, in CreateGrpIconDirHeader
    raise ValueError("too many images for this icon: %d" % iconheader.idCount)
ValueError: too many images for this icon: 19

 また、とても単純なのでバッチファイルにするほどでもないのですが、一応この setupスクリプトを使って EXEファイル化するバッチファイル"make_py2exe.bat"も作成しました。

@echo off
setlocal
C:¥Python34¥python py2exe_setup.py py2exe
endlocal
exit /b

こうして EXE化された QuickIRの"dist"フォルダの内容はこんな感じになります。

 単独のEXEファイルというわけにはいきませんでしたが、cx_freeze に比べたら随分とスッキリしていますよね。今のところ動作も問題ないようです。



< 過去の記事 [ 12月の プログラミング リスト ] 新しい記事 >

2016 calendar
12月
123
45678910
11121314151617
18192021222324
25262728293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.