ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2009年1月19日月曜日

WinもIPythonにしちゃった

会社のWinマシンにCygwinを入れて、日本語化して、Python動くようにして、、、
とやっているうちに我に返りました。

こんなに重くて、いろいろ面倒なCygwinを入れる必要あるのか??

会社でPythonを使うとすれば、それは何らかのツールを作っているときだし。

わざわざCygwinをいれるほど僕はUnix野郎じゃなかった気がする。。。

というわけで、会社でのPython開発環境もIPythonにしました。

さあ、仕事でつかってみよー。

ipythonの方が便利じゃん

今年の初めにPythonを始めて、週に2回くらいgeditでコーディングしていたのですが、やっぱりコード補完機能がないと面倒。
っということで、ipythonを導入。

参考にしたのは下記のあたり。

IPythonって最高!


コード補完超便利。インタラクティブシェルだし最高。
加えて、lsとかある程度のshellコマンドも使えるので、コンソールを切り替える必要がなくて楽。入出力の履歴も見れるし。デバッグもできるらしい。

で、こうなってくるとインタラクティブシェルで書いたコマンドをファイルに保存したい。
エディタ立ち上げて書き直すのも面倒。
そのあたりは下記を参照しました。

pythonのシェルで入力履歴をファイル保存する


結構いい感じ。日本語の扱いに不安が残るけど、まあ調べれば何とかなるでしょう。

会社のWinマシンにもCygwinを入れたので、会社でも使ってみようかな。

2009年1月3日土曜日

geditからPythonを直接実行できるようにする

この2日くらい、ちょこちょこPythonをいじって遊んでいます。
で、開発環境としてEclipseも考えていたんだけど、もうすこし軽快なエディタでさくさくやりたいなあ、ということでいくつか物色。

結局、gnomeに標準で付いてくるgeditにしたんだけど、他にもIDLEとかEmacsとか色々あるのですねえ。
この際、Emacsを覚えてハッカー気取りになりたいなあと思いつつも、きっとEmacsを使えるようになる前に飽きるなあと思ったりしていました。いやあハッカーにはなれないですなあ。

で、geditにはPythonコンソールというプラグインが付いていて、エディタでコーディングしながら下のペインでインタラクティブシェルが使えるんです。これはこれで便利です。

が、所詮インタラクティブシェルなので、ほんの数行書いて試してみるくらいならいいのですが、書き上げたプログラムのテスト実行するのには面倒なので、ちょっと拡張してみることにしました。


まず、「編集」メニューの「設定」から「プラグイン」タブを開き、「外部ツール」にチェックを入れ、外部ツールプラグインを有効に。

このプラグインは、geditのメニューから任意の外部コマンド、シェルスクリプトを実行出来るようにするものみたい。ショートカットも割り当てられるのでかなり便利。

今回は、他のIDEと似た動きをさせたいので「F9」キーの押下で実行出来るようにしたい。

あらかじめ組み込まれている「コマンドの実行」で近いことは出きるが、これだと毎回実行コマンドを手入力しないといけないので少しめんどう。

なので、この「コマンドの実行」に記述されているシェルスクリプトを参考に、以下のような新規コマンドを作成。
#!/bin/sh
exec `zenity --entry --title="Run command - gedit" --text="Command to run" --entry-text="python "$GEDIT_CURRENT_DOCUMENT_NAME`

その他、入力を「編集中のドキュメント」に設定。(下図参照)

ヘルプによるとGEDIT_CURRENT_DOCUMENT_NAMEという変数は現在編集中のファイル名が入るみたいです。
これでF9を押すと。。。


こんな感じになります。これでOKを押せばPythonスクリプトをgeditから実行出来ます。
引数が必要なスクリプトであれば、この画面で.pyの後にスペース区切りで渡してやればいいと思いますよ。

ダイアログをはさむのが面倒であれば、もちろん下記のように書くだけでいいと思います。
#!/bin/sh
python $GEDIT_CURRENT_DOCUMENT_NAME
ってな感じで遊んでいます。仕事に関係のないプログラミングは楽しいですね。(今回はプログラミングしてませんが。。)
今のところの目標はpygameを使って簡単なゲームを作ることにしています。。
とりあえず、リバーシを作るかな。ベタに。。

ちなみに特に触れませんでしたが、今回このカスタマイズをするなかでzenityというgnomeのツールの存在を知りました。(上記のコマンドのなかにもサラッと出てきていますね)
コマンドラインから簡易なダイアログを生成することが出きるので、ちょっとしたスクリプトもまるでGUIツールのようにリッチなふりが出来ますね。
これかなり便利。

2008年12月27日土曜日

ちょこっとだけPython

Lazarusの方は会社で実践してみることにしたので、しばらく置いておく。
只今、会社にLinuxPCの持ち込みを申請中。
これが通れば、会社でLazarusを使ってうちの製品をコンパイルできるか(そのままじゃ絶対できないけど)、試してみようと思う。
それで分かったことやおもしろいことがあれば、このブログで公開していこうと思う。公開できる範囲で。

で、趣味でPythonをちょこっとやってみた。

関数も値として扱えるということで、下記のようなコードを書いて実行。


def square(x):
return x*x
def nosquare(x):
return x
x=2
foo = square
print "The square of that number is", foo(x)
square = nosquare
foo = square
print "The square of that number is", foo(x)
print "The square of that number is", square(x)


引数として与えられた値を二乗して返すという単純なもの。
途中で関数の中身を書き換えているのだが。。
結果は下記。

The square of that number is 4
The square of that number is 2
The square of that number is 2


元々定義していたsquareの中身も上書き出来ちゃうのね。
きもいなあ。

これって要するに関数ポインタを隠蔽してるってことなんだよね? きっと。
…っと思い、下記のように少し書き換えて実行。

def square(x):
return x*x
def nosquare(x,y):
return x+y
x=2
y=1
foo = square
print "The square of that number is", foo(x)
square = nosquare
foo = square
print "The square of that number is", foo(x,y)
print "The square of that number is", square(x,y)


結果。

The square of that number is 4
The square of that number is 3
The square of that number is 3


引数と返り値を合わせなくても代入できるところが強力なのかな。
型チェックもゆるいし、なんとなく書くにはいい感じ。楽だ。。
でも、遅そー。。

今日から始めたばかりなので、まだ分からないことばかりだが、ちょっとおもしろい。