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のバージョンが合ってるかどうか確認する。
違ってたら適宜修正する。

setup.py

setup.pyを書き換えて用意したこれらのファイルを読み込むように変更する。

これで上手く行けば見た目がWindowsXP以降のキレイな表示に変わります。

環境

Windows 7(64bit)
Python 2.7.3

参考

the appearance of wxpython using py2exe – Google グループ
https://groups.google.com/forum/?fromgroups=#!topic/wxpython-users/OJ91DqSm3xw

py2exe-python26 – wxPyWiki
http://wiki.wxpython.org/py2exe-python26


Lispを書いてると、他の言語でもapplyを使いたくなる。

そしてPythonにもapplyがあったので早速喜んで使ってたら引数の数がおかしいというエラーメッセージに困らされた。

基本的なapplyの使い方

とまあこんな感じ使うわけです。

文字列を引数にできない。

ところがこの引数の”A”を”ABC”に変えるだけでエラーになる。

どうやら文字列を渡すと文字数分だけの引数を渡したと解釈されてしまうらしい。

解決策

さて、解決方法ですがタイトルにもあるように廃止された関数なのでもう使っちゃダメらしい。

引数 function は呼び出しができるオブジェクト (ユーザ定義 および組み込みの関数またはメソッド、またはクラスオブジェクト) でなければなりません。args はシーケンス型でなくてはなりません。 function は引数リスト args を使って呼び出されます; 引数の数はタプルの長さになります。オプションの引数 keywords を与える場合、 keywords は文字列のキーを持つ辞書で なければなりません。これは引数リストの最後に追加されるキーワード 引数です。 apply() の呼び出しは、単なる function(args) の呼び出しとは異なります。 というのは、apply() の場合、引数は常に一つだから です。apply() は function(*args, **keywords) を 使うのと等価です。 上のような 拡張された関数呼び出し構文” は apply() と全く等価なので、必ずしも apply() を使う必要はありません。
リリース 2.3 で撤廃されました。 上で述べられたような拡張呼び出し構文を使って ください。

自分にはよくわからないですが

applyでやりたいことは function(*args, **keywords) で全部できるから applyは使うな。

ということのようです。

“Python Apply”をキーワードにしてGoogle検索しても「使ってはいけない」という情報がぱっと出て来なかったのでこの記事を書きました。よくわからないエラーで困ってる誰かの参考になれば幸いです。

参考

2.2 非必須組み込み関数 (Non-essential Built-in Functions)
http://docs.python.jp/2.5/lib/non-essential-built-in-funcs.html


無料のオンライン大学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の勉強を始めてみたい方はお早めに。

受講方法

まずコース一覧から受講したいコースを選びます。

受講したいコースがあったら”sign up”から登録します。

で名前とメールアドレス、それにパスワードを入力。
ここで入力する名前が証明書などに残るので本名を入力しましょう。

ポップアップでメッセージと”Go to class”という表示が出てくるのでクリックして次へ。

ここでHonor Code[敬意を持って守る規定]への同意を求められるのでよく読んで同意しましょう。

1. 一つのアカウントのみ登録します。
2. 宿題、クイズそれに試験を独力で行います。
3. 宿題、クイズそれに試験の答えを誰にも教えません。
4. 不誠実に成績を改鼠しません。

コースのホーム画面に飛びます。既に開始されてるコースなのでまずは溜まってる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


さくらのVPSにputtyを使ってSSHでログインしてる時に間違えて /usr/bin/python を叩いてしまい(コピーしようとしたら貼りつけてしまった。)インタプリタを終了できなくてちょっと焦ったので終了方法のメモ。

‘Use Ctrl-D (i.e. EOF) to exit.’

とか言ってるくるけど Ctrl-D をおしてもサーバーまで届かない。

正しい終了方法は

だそうです。 ああ、そうか 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/


xamppには標準でpythonが入っているけど残念ながらpythonが入ってないので使いたかったら自分で入れる必要があるらしい。なので入れてみた。

環境

Windows 7 32bit
Xampp 1.7.7
Python 2.6.1 (Portable)

必要なもの

“Xampp python”で検索するとmod_pythonの情報が出てきてインストール方法も色々と出てくるんだけれどもmod_pythonのwindows版はpythonのバージョンが2.5までにしか対応してないようで非常にめんどくさそう。

色々探してたら簡単な方法を載せてるサイトが見つかったのでその方法を紹介します。
インストールが必要な物は何もなし。ヽ(´▽`)ノ

設定方法

まず
[xamppをインストールしたディレクトリ]\apache\conf\httpd.conf
を開いて

と追記します。

場所は多分どこでもいいけど、既に
“AddHandler cgi-script .cgi .pl .asp”って書いてる所があるのでその下にでも。

んで、動かしたいpythonスクリプトの行頭に

とpython.exeがある場所を書いておきます。

以上で終わり。

確認

と書いて[xamppのフォルダ]\htdocs\pythontest.py に保存して

xampp_start.exe でサーバーを起動させて

http://localhost/pythontext.py

を開いて “hello world.”が表示されたらOK。
サーバーが起動してる状態で設定したらxamppを一回終了させて再起動させないと動きません。

やっとくと便利なこと

http://localhost/index.html が
http://localhost/ でも開けるように

http://localhost/index.py が
http://localhost/ でも開けるように設定しときましょう。

参考

Getting python to work on Xampp
http://www.macouno.com/2010/03/17/getting-python-to-work-on-xampp/


はじめに

最初に書いておきます。 SSH でログインした telnet 上ではTwitterのつぶやきが行えることを確認しましたが cron で動かしたり、CGIから呼び出したりはうまくいってません。 その情報がほしい方は他のサイトへどうぞ。 情報をすでに持っている方はぜひ教えてください。

~~~~~~~~前置きここまで~~~~~~~~

Twitterの投稿をPythonを使ってさくらのレンタルサーバで行いたいけども外部モジュールである simplejson や twitter をインストールしないと動かずに

やら

なんかのエラーが出てしまう。

インストールに必要なもの

外部モジュールを使うためには以下の物が必要になってくる。

  1. 外部モジュールのファイル本体
  2. さくらのレンタルサーバーのスタンダード以上のプラン
  3. FTPクライアント
  4. 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/

だけをインストールするで良いなら楽なんですが、依存関係が3つあるって上のサイトに書いてますので、指定された

“httplib2-0.6.0.tar.gz” と
http://code.google.com/p/httplib2/

“simplejson-2.1.5.tar.gz” と
http://pypi.python.org/pypi/simplejson

“simplegeo-python-oauth2-debian-1.5.169-0-gaee5557.tar.gz” を
http://github.com/simplegeo/python-oauth2

ダウンロードしてきてFTPクライアントを使ってサーバーにアップロードします。ファイルを展開してからアップロードしても良いんですが、そうすると転送時間が結構かかっちゃうのでtelnet上で展開することにします。

FTPクライアントでファイルのアップロード問題ないでしょうから説明を飛ばします。ホームディレクトリの直下にtempとか適当なフォルダを作ってそこに上げておいてください。

PuTTYの使い方

PuTTYのインストールが終わったらputty.exeを起動して設定画で[Session]の中にある Host Name (or IP address) に [username].sakura.ne.jp を入力して、それから Port を “22” に設定します。

設定を入力したら[Open]で telnet を開いて

でユーザー名とパスワードを入力します。 ユーザー名に .sakura.ne.jp 部分はいりません。

ログインできたらちゃんと動いてるか確認するためにpythonのバージョンの確認をしておきましょう。

あと作業時に環境変数PYTHONPATHを設定しておかないとうまくいかないで、

でsetenv PYTHONPATH ~/lib/python で設定しておきます。

次にさっきアップロードしたファイルを展開します。 tempフォルダを作ったので

でカレントディレクトリを変更して、

を4回繰り返して全部展開します。 ファイル名は数文字入力してTABキーを押せば補完されます。

解凍できたら展開されたディレクトリに入って

と入力します。これを4回繰り返すわけですが、依存関係があるので
C:\python-twitter-0.8.1>python setup.py build
C:\python-twitter-0.8.1>python setup.py install

httplib2 → simplejson → simplegeo → python-twitter

の順で行ってください。

最後にちゃんとインストールで来たか import で確認しておきます。

エラーが出てこなければ成功です。

参考にしたサイト

「さくらのレンタルサーバ」で Python 外部モジュールを使う 改訂版
http://www.emptypage.jp/notes/pymods-on-sakura.html

Python Twitter のインストール
http://www.yukun.info/blog/2011/03/python-twitter-install.html

Twitter Bot を作ってみる
http://lazycozysblog.blogspot.com/2010/03/twitter-bot.html


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名の大文字小文字が変更されたのが原因だったようだ。