上記記事より先に下書きになってたんで掘り出しました。
メモ代わりなのでたくさん端折ります。
easy_installが使えることが前提で話を進めていきます。
インストーラーでPythonをインストールした場合は使えなかったと思います。
詳しくは過去記事をご確認ください。
py2appというものが主流らしいのでこれでビルドしてみます。
Windowsで使えるようにするにはpy2exeというものがあるらしいです
easy_install py2app
ビルドしたいPythonプログラムのあるフォルダ内で以下を実行
py2applet --make-setup sample.py
フォルダ内にsetup.pyというファイルが作られます。
""" This is a setup.py script generated by py2applet Usage: python setup.py py2app """ from setuptools import setup APP = ['sample.py'] DATA_FILES = [] OPTIONS = {'argv_emulation': True} setup( app=APP, data_files=DATA_FILES, options={'py2app': OPTIONS}, setup_requires=['py2app'], )
中身はこんな感じ。ここをいじることでアイコンを変えられたりするらしいです。
python setup.py py2app -A
フォルダ内にbuild、distというフォルダが作成されるのでdist内にビルドしたファイルがあります。
いろいろとテストはしていないので、対処法とかはわかりませんが、起動すると上手くいかない事態が起こっています。
謎です。わかる方いらしたら教えて下さい。
Hello_world.py
# -*- encoding: utf-8 -*- import wx app = wx.App() frame = wx.Frame(None, -1, 'Hello World!') frame.Show() app.MainLoop()
上のような一番シンプルなアプリは問題なく起動できるのですが、昨日(現在:平成27年4月21日)作った
wxPythonで作るsuperπもどきではエラーが発生しました。
一応ソースコードです。
# -*- encoding: utf-8 -*- import wx import time N = 10000 # 円柱率小数点以下の算出 def ppii(n) : a , b , i = 10 ** n , 10 ** n , n * 8 + 1 while i >= 3 : a , i = (a + b + b ) * (i / 2) / i , i - 2 return a - b # アプリケーションの初期化 app = wx.App() # フレームの初期化 frame = wx.Frame(None , -1 , 'superπをwxPythonで作ってみる') # パネル作成 panel = wx.Panel(frame , -1) # ファイルへの書き出し start = time.time() f = open('result.txt' , 'w') f.write('3.\n' + str(ppii(N)) + '\n') f.close() elapsed_time = time.time() - start # 計算結果をresultに格納 #result = wx.TextCtrl(panel , -1 , ('3.' + str(ppii(1000)) + '\n')) result = wx.StaticText(panel , -1 , ('3.' + str(ppii(40)) + '...\n')) # resultへの書き込みを拒否 #result.Disable() st1 = wx.StaticText(panel , -1 , '\n\n' + str(N) + '桁の計算終了\n') res = wx.StaticText(panel , -1 , '\n\n\n' + str(elapsed_time * 100) + 'ミリ秒') # レイアウト作成 layout = wx.BoxSizer(wx.VERTICAL) panel.SetSizer(layout) # ステータスバー作成 frame.CreateStatusBar() frame.SetStatusText('super_pi.appと同ディレクトリ内に結果ファイルを出力しました。') frame.Show() app.MainLoop()
(データを更新してたの忘れてました。GitHub上のコミットデータみてくださると嬉しいです。
上記のソースコードでも同じようになりました。)
これをビルドしてあげると...
こんな感じになりました。それで一応テストとして違うファイルを新しく作っていろいろ試したところ、
if __name__ == "__name__"
こいつを付けなかったら起動に成功しました。そして、superπもどきを実行!!
できない!!
闇が見えそうなので諦めました。
わかる方いらしたら教えてくださると幸いです