【python】Python スクリプトを実行ファイルに変換する方法
4月からやり始めたpython。仕事の合間に(というか休み時間とか、休日とか)
やっているが、時間がとれず、遅々として進まないのだが、
本日は予定の無い土曜日、少しやってみた。
今日のテーマは「Python スクリプトを実行ファイルに変換する方法」
py2exeとかpy2appがあるが、どうやらpython3には対応していないとのこと。
ググると、cx_Freezeというのが良さげ。
自分の環境は
OSX10.6
python3.3
■cx_Freezeのインストール
・Windows
http://cx-freeze.sourceforge.net/ から
ダウンロード
cx_Freeze-4.3.1.win32-py3.3.msi を取得し、解凍、インストール。
・OSX
http://cx-freeze.sourceforge.net/ から
ソースのダウンロード
cx_Freeze-4.3.1.tar.gzを取得し、
解凍。
http://www.atsuhiro-me.net/python/dev/cx_freeze-app
を参考にする。(Command Line Toolsなどは既に設定済み)
プラットフォーム依存しないということで、以後はOSXで進める。
cd /Users/xxxx/Desktop/cx_Freeze-4.3.1
python3 setup.py build
warningがでるが、完了。
sudo python3 setup.py install
これもwarningがでるが、完了。
■モジュールがないスクリプトで試す
で、簡単なプロジェクトに対して、setup.pyを作る
メインのスクリプトは、main.py
setup.py
———————————————–
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == “win32″:
base = “Win32GUI”
setup( name = “CHOOOSEFILE”,
version = “1.0″,
description = ‘converter’,
executables = [Executable("main.py", base=base)])
———————————————–
cd ~/自分のプロジェクト
python setup.py build
すると、プロジェクト内にexe.macosx-10.6-intel-3.3/buildフォルダができ、
いろいろと出来ているが、mainファイルがあって、それをダブルクリック。
無事動作した! パチパチ
■モジュールがある場合で試す
今作っているスクリプトの多くは、lxmlという、xmlを扱うモジュールが必要。
これを含める必要がある。
setup.py
———————————————–
import sys
from cx_Freeze import setup, Executable
copyDependentFiles = True
silent = True
base = None
includes = ['lxml', 'lxml._elementpath','lxml.etree', ~他のモジュール]
excludes = []
if sys.platform == “win32″:
base = “Win32GUI”
setup( name = “myPythonProgram”,
version = “1.0″,
options = {“build_exe”: {“includes”:includes, “excludes”:excludes}},
executables = [Executable("main.py",base=base)]
)
———————————————–
python setup.py build
をすると、エラーもでず、実行ファイルができる。
で、ダブルクリックすると….
from lxml import etree
ImportError: cannot import name etree
となって、実行されず。
ここから、いろいろ試行錯誤、ググりまくる。
2時間ほど、格闘。
で、結果OKとなったのが、
setup.py
———————————————–
import sys
from cx_Freeze import setup, Executable
copyDependentFiles = True
silent = True
base = None
packages = ['lxml']
includes = [他のモジュール]
excludes = []
if sys.platform == “win32″:
base = “Win32GUI”
setup( name = “myPythonProgram”,
version = “1.0″,
options = {“build_exe”: {“includes”:includes, “excludes”:excludes, “packages”: packages}},
executables = [Executable("main.py",base=base)]
)
———————————————–
packagesという書き方があるのですね。
これでできた、実行ファイルをダブルクリックすると、
あら、ステキ、瞬時に処理完了しました。
この段階では、buildフォルダに、いろんなファイルができていて、app形式にはなっていません。
そこで、
python3 setup.py bdist_mac を実行します。
buildフォルダの直下に、appができました。
appをダブルクリックして、実行! 完了!
今日は気持よく終えて、スッキリです。
Leave a comment
記事投稿日
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
« 9月 | ||||||
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |