ブログを作る※無料・簡単アフィリ    ブログトップ | 楽天市場
907689 ランダム
cx_freeze で Python スクリプトを… (パソコン・家電)楽天ブログ 【ケータイで見る】 【ログイン】

傀儡師の館.Python
ホーム 日記 プロフィール オークション 掲示板 ブックマーク お買い物一覧

PR

Calendar

November 2011
SMTWTFS
  12345
6789101112
13141516171819
20212223242526
27282930   
<一覧へthis monthnext>

Keyword Search

Category

Archives

Mobile

>>ケータイに
このブログの
URLを送信!

 

傀儡師の日記

<< 前へ次へ >>一覧コメントを書く

2008.01.12 楽天プロフィール Add to Google XML

cx_freeze で Python スクリプトを単体で動く実行形式にする プログラミング言語 Python を使う(199)」
[ Python ]    

Python のソースコードを Windows の EXE 形式の実行ファイルにコンパイルするツールとして py2exe がある。たぶん、一番よく使われるのがこれ。でも、setup ファイルを書かなくてはならないのが面倒。cx_freeze の方が、その点楽で setup ファイルを書く必要がない。FreezePython hoge.py で hoge.exe を作ってくれる。楽なのが一番。Linux でも、実行ファイルを作ることができるというところもいい。

ただし、sitecustomize.py とか読んでないので sys.getdefaultencoding() が ascii になる。UTF-8 にしたい。さもないと LookupError: unknown encoding: utf-8 とかいうことになる(私はソースファイルを UTF-8 で書いているので)。

そこで initscripts\Console の中に次の行を入れておく。こうしておくと、sys.getdefaultencoding() が UTF-8 になり、エンコーディングのエラーもでなくなる。

from encodings import utf_8
from encodings import cp932

import sys
if hasattr(sys,"setdefaultencoding"):
sys.setdefaultencoding("utf-8")

この手の実行形式のファイルを作ってくれるツールとして他にも Jungle .Py Compiler がある。これもjungle hoge.py で実行ファイルを作ってくれる。ただし、環境変数 PYTHONPATH を指定してない場合、ソースと同じ場所にライブラリがないと import している部分が読み込まれない。set PYTHONPATH=C:\Python24\lib\site-packages とかしてから jungle hoge.py とするか、-p オプションをつけて jungle -p C:\python24\lib\site-packages hoge.py のようにしないとダメ。

.Py Compiler の jungle.exe 等、ソースファイルがどこで公開されているのか、あるいは公開されていないのか不明なことと、エンコーディングの問題でエラーが出るのに対して対処方法が分からないのでギブアップ。やっぱりソースコードがあるやつがいい。というか、ないとちょっと不安。PYTHONPATHの指定だけでは、コンパイルできても実行時に import できずにエラーになるものもある。Gnuplot.py を使ったものがだめだった。

cx_freeze に比べると 実行ファイルが若干小さいの、実行速度もちょっと速いようなので、そこはいいところ。System Call の呼び出し回数が少ないので (61716 vs 56467)、そのあたりが効いてきているのかな。

cx_freeze で作ったもの
Version Number: Windows NT 5.1 (Build 2600)
Exit Time: 4:18 pm, Saturday, January 12 2008
Elapsed Time: 0:00:00.390
Process Time: 0:00:00.250
System Calls: 61716
Context Switches: 6470
Page Faults: 6948
Bytes Read: 8084451
Bytes Written: 45268
Bytes Other: 372109

jungle で作ったもの
Version Number: Windows NT 5.1 (Build 2600)
Exit Time: 4:18 pm, Saturday, January 12 2008
Elapsed Time: 0:00:00.375
Process Time: 0:00:00.218
System Calls: 56467
Context Switches: 6651
Page Faults: 5962
Bytes Read: 7526699
Bytes Written: 45232
Bytes Other: 462425

でも、使い勝手とソースコードがあることの安心感とか、最低限のドキュメントがあるとか、使い方が一番簡単、ということで全般的なバランスから cx_freeze がいいかな。


アクセス解析




Last updated  2008.01.13 00:06:37
コメント(2) | コメントを書く





■コメント

お名前
タイトル
メッセージ

画像認証
別の画像を表示
上の画像で表示されている数字を入力して下さい。


※管理者の設定により、スパムコメントを防ぐため、コメント投稿時に画像認証が必要です。

・メッセージ本文は全角で800文字までです。
・書き込みに際しては楽天ブログ規約の禁止事項や免責事項をご確認ください
・ページの設定によっては、プルダウンで「顔選択」を行っても、アイコンが表示されません。ご了承ください。


bbfreezeっていうのはどう?   nobonoboさん


情報ありがとうございます   kugutsushiさん


<< 前へ次へ >>一覧コメントを書く一番上に戻る


Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2012 Rakuten, Inc. All Rights Reserved.