wxPythonで作ったUIをpy2exeで変換すると見た目が変わる問題

wxPythonを使って頑張って作ったGUIをPythonが入ってないPCの人も使えるようにするのにpy2exeで変換したら見た目が変わってしまった(古い?TK?)のでその対処法。 必要なファイル Microsoft.VC90.CRT.manifest msvcm90.dll msvcp90.dll msvcr90.dll の4つのファイルが必要。自分の環境だとPython 2.7 Portableを入れたフォルダに全部入っていたので、Py27MSdllsというフォルダをsetup.pyと同じ階層に作って全部入れました。 Microsoft.VC90.CRT.manifest の中で示されてるdllのバージョンが合ってるかどうか確認する。 違ってたら適宜修正する。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><br> <!-- Copyright (c) Microsoft Corporation. All rights reserved. --><br> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><br> <noInheritable/><br> <assemblyIdentity<br> type="win32"<br> name="Microsoft.VC90.CRT"<br> <s>version="9.0.21022.8"</s> <span style=color:red;>version="9.0.30729.6161"</span><br> processorArchitecture="x86"<br> publicKeyToken="1fc8b3b9a1e18e3b"<br> /><br> <file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" /><br> </assembly><br> setup.py setup.pyを書き換えて用意したこれらのファイルを読み込むように変更する。 # -*- coding: utf-8 -*-<br> #<br> # setup.py<br> <br> from distutils.core import setup<br> import py2exe<br> import glob<br> <br> <br> class Target(object):<br> """ A simple class that holds information on our executable file. """<br> def __init__(self, **kw):<br> """ Default class constructor. Update as you need. """<br> self.__dict__.update(kw)<br> <br> MANIFEST_TEMPLATE = """<br> <?xml version="1.0" encoding="UTF-8" standalone="yes"?><br> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><br> <assemblyIdentity<br> version="5.0.0.0"<br> processorArchitecture="x86"<br> name="%(prog)s"<br> type="win32"<br> /><br> <description>%(prog)s</description><br> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><br> <security><br> <requestedPrivileges><br> <requestedExecutionLevel<br> level="asInvoker"<br> uiAccess="false"><br> </requestedExecutionLevel><br> </requestedPrivileges><br> </security><br> </trustInfo><br> <dependency><br> <dependentAssembly><br> <assemblyIdentity<br> type="win32"<br> name="Microsoft.VC90.CRT"<br> version="9.0.30729.6161"<br> processorArchitecture="x86"<br> publicKeyToken="1fc8b3b9a1e18e3b"><br> </assemblyIdentity><br> </dependentAssembly><br> </dependency><br> <dependency><br> <dependentAssembly><br> <assemblyIdentity<br> type="win32"<br> name="Microsoft.Windows.Common-Controls"<br> version="6.0.0.0"<br> processorArchitecture="X86"<br> publicKeyToken="6595b64144ccf1df"<br> language="*"<br> /><br> </dependentAssembly><br> </dependency><br> </assembly><br> """<br> <br> other_resources = [(24, 1, MANIFEST_TEMPLATE % dict(prog="MyAppName"))]<br> py26MSdll = glob.glob(r"Py27MSdlls\*.*")<br> data_files = [("", py26MSdll),]<br> <br> py2exe_options = {"compressed":1,<br> "optimize":2,<br> "bundle_files":2}<br> <br> setup(<br> data_files = data_files,<br> options={"py2exe": py2exe_options},<br> windows= [Target(script = 'movie_info.py', other_resources = other_resources)]<br> ) これで上手く行けば見た目がWindowsXP以降のキレイな表示に変わります。 ...

2013-03-29 · 鉄

Pythonのapplyを使う時の注意点、…というか使っちゃダメ。

Lisp を書いてると、他の言語でも apply を使いたくなる。 そして Python にも apply があったので早速喜んで使ってたら引数の数がおかしいというエラーメッセージに困らされた。 基本的な apply の使い方 ` def hoge(word): print word apply(hoge,"A") ` とまあこんな感じ使うわけです。 文字列を引数にできない。 ところがこの引数の"A"を"ABC"に変えるだけでエラーになる。 ` Traceback (most recent call last): File "", line 9, in TypeError: hoge() takes exactly 1 argument (3 given) ` どうやら文字列を渡すと文字数分だけの引数を渡したと解釈されてしまうらしい。 解決策 さて、解決方法ですがタイトルにもあるように廃止された関数なのでもう使っちゃダメらしい。 引数 function は呼び出しができるオブジェクト (ユーザ定義 および組み込みの関数またはメソッド、またはクラスオブジェクト) でなければなりません。args はシーケンス型でなくてはなりません。 function は引数リスト args を使って呼び出されます; 引数の数はタプルの長さになります。オプションの引数 keywords を与える場合、 keywords は文字列のキーを持つ辞書で なければなりません。これは引数リストの最後に追加されるキーワード 引数です。 apply() の呼び出しは、単なる function(args) の呼び出しとは異なります。 というのは、apply() の場合、引数は常に一つだから です。apply() は function(*args, **keywords) を 使うのと等価です。 上のような “拡張された関数呼び出し構文” は apply() と全く等価なので、必ずしも apply() を使う必要はありません。 ...

2013-01-15 · 鉄

話題のオンライン無料大学CourseraでPythonの授業をとってみた。

無料のオンライン大学Courseraについてはこちらを見てください。 【TED】 Coursera創業者による「オンライン教育が教えてくれること」 | IDEA*IDEA http://www.ideaxidea.com/archives/2012/09/ted_coursera.html このCourseraで"An Introduction to Interactive Programming in Python"という面白そうな授業があったので登録してみました。プログラミング経験がほとんどない人向けの講座だそうなのですが、英語のハンデもあるのでちょうどいいかと思って初めて見ました。まだ受講は受け付けていますが、10月15日からの講座なのでPythonの勉強を始めてみたい方はお早めに。 受講方法 まず[コース一覧][1]から受講したいコースを選びます。 受講したいコースがあったら"sign up"から登録します。 で名前とメールアドレス、それにパスワードを入力。 ここで入力する名前が証明書などに残るので本名を入力しましょう。 ポップアップでメッセージと"Go to class"という表示が出てくるのでクリックして次へ。 ここでHonor Code[敬意を持って守る規定]への同意を求められるのでよく読んで同意しましょう。 一つのアカウントのみ登録します。 宿題、クイズそれに試験を独力で行います。 宿題、クイズそれに試験の答えを誰にも教えません。 不誠実に成績を改鼠しません。 コースのホーム画面に飛びます。既に開始されてるコースなのでまずは溜まってるAnnouncementsから見ていきましょう。上に行くほど新しいお知らせなので一番下から読んでいきます。 どういう風に進んでいくか。 ここからは何を受講するかによっても変わってくると思うので参考程度に読んでください。 ・毎週2セクションごと進む。 ・週の開始は土曜日の朝。(アメリカ時間?) ・土曜日の朝に50~150行程度で作れるミニプロジェクトが割り当てられるので、それを次の土曜日の午後までに提出する。 ・そして次の日曜日から水曜日の間に生徒間で相互添削を行う。 ・相互添削で自分の評価をもらうためには最低5つを行わなければならない。 ・毎週6~10個程度の短いレクチャーの動画を見る。 ・クイズが週2回、でミニプロジェクトが1回。 ・プログラミング環境は http://www.codeskulptor.org/ を使う。 レクチャーのビデオを見る 左上の[Video Lectures]からレクチャーが見れます。この講座をどのように進めていくかと、この講座でどのようなものが作れるかの説明があります。基本的な動作をするゲームが作れるので面白そう。 英語は自分にはまだちょっと難しいですが、字幕を[CC]でつけて見ることもできるし、テキストやSRTファイルでダウンロードして読むこともできます。 動画プレイヤーのVLCなら0.8倍速などのように音の高低を変化させずに再生速度を変えれますし、SRTファイルをそのまま再生中の動画にDrag & Dropするだけで字幕を表示できるのでオススメです。 他にも面白そうな講座はたくさんありますので、どんな講座があるかだけでも眺めてみると良いんじゃないでしょうか。 Course Catalog | Coursera https://www.coursera.org/courses

2012-10-30 · 鉄

さくらのVPSでpythonのインタプリタを終了させる

さくらのVPSにputtyを使ってSSHでログインしてる時に間違えて /usr/bin/python を叩いてしまい(コピーしようとしたら貼りつけてしまった。)インタプリタを終了できなくてちょっと焦ったので終了方法のメモ。 ‘Use Ctrl-D (i.e. EOF) to exit.’ とか言ってるくるけど Ctrl-D をおしてもサーバーまで届かない。 正しい終了方法は import sys sys.exit() だそうです。 ああ、そうか sys をインポートしなきゃならんのか。プログラムを書いてる時だと気づくのにインタプリタ普段使わないから何かちがうものだと勝手に思い込んじゃってたよ…。 参考 pythonインタプリタを終了する http://blog.justoneplanet.info/2010/08/07/python%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%82%92%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B/

2012-01-05 · 鉄

xamppでpythonを使う

xampp には標準で python が入っているけど残念ながら python が入ってないので使いたかったら自分で入れる必要があるらしい。なので入れてみた。 環境 Windows 7 32bit Xampp 1.7.7 Python 2.6.1 (Portable) 必要なもの Xampp pythonで検索すると python の情報が出てきてインストール方法も色々と出てくるんだけれども python の windows 版は python のバージョンが 2.5 までにしか対応してないようで非常にめんどくさそう。 色々探してたら簡単な方法を載せてるサイトが見つかったのでその方法を紹介します。 インストールが必要な物は何もなし。ヽ(´▽ `)ノ 設定方法 まず [xampp をインストールしたディレクトリ]\apache\conf\httpd.conf を開いて # # For Python # AddHandler cgi-script .py ScriptInterpreterSource Registry-Strict と追記します。 場所は多分どこでもいいけど、既に “AddHandler cgi-script .cgi .pl .asp"って書いてる所があるのでその下にでも。 んで、動かしたい python スクリプトの行頭に #!P:\Dropbox\bin\Python26\App\python.exe と python.exe がある場所を書いておきます。 以上で終わり。 確認 #![python.exeの置いてる場所]\python.exe print "Content-Type: text/plain" print print "hello world." と書いて[xampp のフォルダ]\htdocs\pythontest.py に保存して ...

2011-11-16 · 鉄

さくらのレンタルサーバーでPythonのTwitterライブラリを使う

はじめに 最初に書いておきます。 SSH でログインした telnet 上では Twitter のつぶやきが行えることを確認しましたが cron で動かしたり、CGI から呼び出したりはうまくいってません。 その情報がほしい方は他のサイトへどうぞ。 情報をすでに持っている方はぜひ教えてください。 ~~~~~~~~前置きここまで~~~~~~~~ Twitter の投稿を Python を使ってさくらのレンタルサーバで行いたいけども外部モジュールである simplejson や twitter をインストールしないと動かずにImportError: No module named simplejson やらImportError: No module named twitter なんかのエラーが出てしまう。 インストールに必要なもの 外部モジュールを使うためには以下の物が必要になってくる。 外部モジュールのファイル本体 さくらのレンタルサーバーのスタンダード以上のプラン FTP クライアント telnet/SSH クライアント 外部モジュールのファイル本体 使いたい外部モジュールのファイルをダウンロードしてサーバーにあげて置かなければいけません。 今回は python-twitter とその依存関係のファイル。 さくらのレンタルサーバーのスタンダード以上のプラン スタンダード以上のプランでないと telnet/SSH が使えないのでライトプランの人は諦めてください。(ノ Д`)/~ サヨーナラ FTP クライアント なくてもできるんですが、あったほうが便利なので。 現在使ってるのがなければ FFFTP を使っておいてください。 telnet/SSH クライアント 次に telnet クライアント。 これも何使っても構わないんですが、既に使ってる別のがないのであればフリーの「PuTTY ごった煮版」を使いましょう。 必要なモジュールファイルのダウンロード “python-twitter-0.8.1.tar.gz” http://code.google.com/p/python-twitter/ ...

2011-05-14 · 鉄

PythonのGUI,Tkinterのエラー対処

PythonのGUI,Tkinterを使おうとこのページの一番上のサンプルを動かそうとすると動かず第一歩をくじかれる。 http://www.pythonware.com/library/tkinter/introduction/hello-tkinter.htm エラーメッセージはこんなの。 ImportError: No module named Tkinter 環境はWindows7でPython3.0.1 Portable。 エラーメッセージで検索しても「yumを使ってモジュールインストールしろ。」とかLinux向けの情報しか出てこない。 適当にあさってやっと見つけた解決策はこれ。 from Tkinter import * を from tkinter import * に変える。 どうも Python3からmodule名の大文字小文字が変更されたのが原因だったようだ。

2011-02-26 · 鉄