Python

Pythonbrewとvirtualenvは何が違うのか

参考:API Only - Stack Exchange僕はPythonの環境管理にvirtualenvを使っているが、Pythonbrewも一応インストールされている。 一体二つは何が違うんだ?とふと気になったので調べたら、上記のページが見つかった。 pythonbrewの特徴 perlbrewやrvmを使って…

Django使いのためのSQLAlchemyチュートリアル

最近Pythonを使い始めた人の多くが最初に使うPythonのORMはDjangoに附属しているやつなんじゃないかと思います。そういった人が、後になってSQLAlchemyを使うと、必要以上に複雑で使いにくいと感じることもあるようです。かく言う僕もそんな感じで、長らく研…

Mac OS X 10.6にAppEngineの開発環境を作る

謎のエラーが出て半日を潰したので備忘録を残す Python2.5をインストール Portsを使ってPython2.5をインストールしたらAppEngineの開発サーバを起動した時に応答がなかった(ソケットまわりで何か変なことになってるっぽい) 追記: py25-hashlib py25-socket…

LSIやLDAを手軽に試せるGensimを使った自然言語処理入門

Gensimはベクトル空間モデルを扱うためのPythonモジュールです。ベクトル空間モデルは画像や音声などのメディアにも用いることができますが、Gensimは特に文書を扱うのに便利な機能を多数用意しており、文書集合から簡単に単語文書行列(GensimではCorpusと呼…

K-meansで遊んでみた

研究室の輪講でK-meansを実装する課題を出すために、自分でも実装してみました。 from copy import deepcopy from random import shuffle def kmeans(rows, k=4, distance=None): if not distance: distance = euclidean dim = len(rows[0]) # 特徴空間の次…

CentOS5.5上でMySQLをバックエンドにGeoDjangoをインストールする

GeoDjangoのバックエンドでMySQLを使うためのセットアップを備忘録として残す。 ドキュメントで何故かRedhat系のことが無視されていて、インストールにかなり手こずった。 GEOSのインストール ./configureに--enable-pythonというオプションがあるが、あれを…

調子に乗ったPythonistaが初心に返る簡単な方法

環境変数PYTHONSTARTUPで指定されているスクリプトに以下を追加するだけ。 import random d = {} for c in (65, 97): for i in range(26): d[chr(i+c)] = chr((i+13) % 26 + c) decode = lambda s: ''.join([d.get(c, c) for c in s]) q, a = map(decode, ra…

連結リストを実装しながら特殊メソッドを勉強する例題を作った

Pythonでは__(アンダースコア二つ)で囲まれたメソッドは特殊メソッドと呼ばれ、これらを決められたルールに沿って実装することで、様々な機能を持たせることができます。例えば、__iter__特殊メソッドを決められたルール(Pythonではイテレータプロトコルと呼…

ipython起動時にReadlineがないと言われたときの対処法

CentOS 5.5にPython 2.6.6をソースから入れたあとにIPython 0.10.1をpipを使ってインストールしたら下記のエラーが出た WARNING: Readline services not available on this platform. WARNING: The auto-indent feature requires the readline library 解決…

yumを使わずにCentOS5.5にnumpyとscipyをインストールする

yum使うとバージョンが古いです。 yumで入るバージョン 最新バージョン(11/03/24時点) numpy 1.2.0 1.5.1 scipy 0.6.0 0.9.0 僕が入れたのは研究室のCentOS5.5(64bit)です。また、 Ubuntu の apt-get でインストールされるバージョンは blas/atlas/lapack を…

Pythonの標準出力のバッファサイズを0にする方法

Pythonにはprogressbarというその名の通りプログレスバーを表示するためにモジュールがあるけど、そんな大それたものじゃなくて、ほんの少しだけでいいからプログレスバーっぽいものを表示したかったから、Pythonで標準出力のバッファサイズを0にする方法を…

RabbitMQとCeleryを使ってDjangoでジョブキューしてみる(2)

RabbitMQとCeleryを使ってDjangoでジョブキューしてみる(1) 前回でPythonからCeleryを利用してジョブキューイングをすることができるようになりました。今回はDjangoでジョブキューイングします。 django-celeryのインストール $ sudo pip install django-…

Google App EngineでDjango 1.1を動かす

前回virtualenvを使って「GAE開発用」という名目でPython 2.5とDjango 0.96が動く仮想環境を作りました virtualenvを使ってPython2.5とDjango0.96が動く環境を作ってみる - SELECT * FROM life; が、調べてみたらいつの間にやらDjango 1.0と1.1がGAEでサポー…

virtualenvを使ってPython2.5とDjango0.96が動く環境を作ってみる

【追記】紛らわしそうなのでタイトル変更しました。 注意 これはvirtualenvを試しに使ってみるためにむりやりGAE用の〜とこじつけているだけで、実際にここで作った環境で即GAEのプロジェクトを始めることができるわけではないです。virtualenvのチュートリ…

RabbitMQとCeleryを使ってDjangoでジョブキューしてみる(1)

注意:今回使っているのは RabbitMQ v2.1.0 Celery v2.1.1 Python v2.6.5 です。バージョンによっては挙動が違うかも知れません。 そもそもメッセージキューイングって何よ?って人はこちら→メッセージキューイングとは さて、Djangoから使えるジョブキュー(…

さくらVPSでDjangoを動かす

さくらVPSを使ってDjangoを動かすまでのログ。と言っても、基本的には真っ白なCentOSの環境構築と全く同じです。 基本設定 CentOSをサーバーとして活用するための基本的な設定 - さくらインターネット創業日記 基本的なセキュリティの設定は上記のエントリを…

ごく簡単なLL比較

主要なLLでGoogle検索した時のヒット件数をなんとなく調べてみたら下のような結果になった。 言語 ヒット数 日本語のみヒット数 Python 約 32,300,000 件 約 1,330,000 件 Perl 約 32,400,000 件 約 2,060,000 件 Ruby 約 70,900,000 件 約 2,900,000 件 PHP…

Pythonのジェネレータで遊ぶ + エイトクイーンパズルをジェネレータを使って解いてみる

Pythonでは関数の途中で結果を一旦返して、次に呼び出す時はその続きから処理を再開するような関数を書くことができます。これをジェネレータと呼びます。 ジェネレータがあると例えば、ある関数がリストを返す場合に、一度にリストの全要素を作らなくても、…

noseとpudbを使ったテスト駆動開発

ソートされた配列の中に与えられた値があるかを調べるためのアルゴリズムに二分探索があります。二分探索の歴史は古くKnuth先生によれば、最初に二分探索の考え方が公開されたのは1946年だったのに、バグなしのプログラムが出版されたのは1962年になってから…

Pythonでタイムゾーン

EC2上で動くDjangoアプリケーションでタイムゾーンをAsia/Tokyoに設定してるのにうまく日本時間に変換して表示してくれませんでした。どう見てもUTCです。それを日本時間に直した時の備忘録 まず、pytzというモジュールをインストールする。 $ easy_install …

休憩時間を利用してWebサービス(笑)を作ってみた

最近コード書いてなかったので課題の休憩時間を使って新しいWebサービス(笑)を作ってみました。全部でだいたい1時間ちょっとくらいかかった 今こそ読む 「あとで読む」タグでブックマークしたきり、一切読まれない記事って実に多いです。あくまでも、個人的…

中級Pythonista向けリファレンスサイト集

Pythonタグがついたブックマークが溜まってきたので、整理も兼ねてその中から個人的なお勧めリファレンスサイトをピックアップしてみました。 PEP8 Pythonの公式コーディング規約の日本語訳。 Google Python スタイルガイド GoogleのPythonコーディング規約…

Pythonで数値計算1

研究をしていると巨大データに対して数値計算を行うという場面が多々あります。数値計算と言えばMatlabが有名ですが、Pythonでも数値計算はできます。ただ、純粋なPythonコードを書くとFortran, C, C++などのコンパイラ言語と比較して許容できないくらい遅く…

datetimeまわりのイディオム

文字列→datetime型 >>> from datetime import datetime >>> d1 = datetime.strptime("2010-04-05", "%Y-%m-%d") # datetime(2010, 4, 5) >>> d2 = datetime.strptime("2010-04-05 14:56", "%Y-%m-%d %H:%M") # datetime(2010, 4, 5, 14, 56) datetime型→文字…

classmethodとstaticmethodデコレータの違い

Pythonでstaticなメソッドを定義しようとする場合、staticmethodデコレータかclassmethodデコレータを使うことになります。これらの違いは、classmethodデコレータでは第一引数がクラスそのものになるのに対し、staticmethodでは特にそういった制約がない、…

or演算子を使った、ちょっと便利なショートカット

Pythonのちょっとした小ネタ。 if not a: a = [] これは変数aを評価した時にFalseになる0, False, None, [], {}, ()だった場合、空のリストを代入するもので、ちょこちょこ出てきます。 上記の式は、実は a = a or [] と同値です。見た目にスッキリするだけ…

Pythonの関数やメソッドの戻り型を指定するデコレータを書いた

http://github.com/taka84u9/type_test 動機 Pythonでは関数の戻り型は完全に自由です。ある時はint、またある時はstrなど。 基本的にはそれで嬉しいのだけど、戻り型が常に同じ場合も多いし、リファクタリングした結果へんなバグが入ったりすることもある。…

OAuthを簡単に利用するためのツールoauthlibを書いた

http://github.com/taka84u9/oauthlib OAuthって便利だけど、RequestTokenとかAccessTokenとか色々やり取りが合って結構面倒ですよね。 Pythonで使えるOAuth用ライブラリとしてはLeah Culverという人が公開しているpython-oauthっていうモジュールがあるので…

Djangoのテンプレートでオブジェクトのダンプを表示

Djangoでテンプレートに渡された(レンダリングされた?)変数をダンプするタグを作った。 たぶん、もっと高機能なやつがどこかにあるんだろうけど、見つからなかった。 使うにはmyapp/templatetags/debug_extra.pyを作って中身を↓にすればOK # -*- coding: …

FedoraでMySQLdbをimportしようとしたらlibmysqlclient_r.so.15がないと言われた時の対処法

ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory と言われたが/usr/libにあるのがlibmysqlclient_r.so.16だった。どうやらMySQL5.1だと16がインストールされるらしい。 なので15を/usr/libにぶち込んでや…