Python C/API Tutorial

http://docs.python.org/tutorial/introduction.html

Python Tutorial を C/API で書いてみるとどうなるか? という実験です. 2章までは Python そのものの紹介なので3章から. 本文とかは飛ばして, コードサンプルの C/API への翻訳に注力します. (もしかしたらそのうち文書もちゃんと書いて公開するかも.)

コンパイル

コンパイル方法は以下を参考に

こんな感じでやりました.

# ライブラリ
$ gcc -Wall -fPIC -c hello.c -I/usr/local/Cellar/python/2.7.1/include/python2.7/ -lpython2.7
$ gcc -shared -o hello.so hello.o -lpython2.7

# 実行バイナリ
$ gcc -Wall -I/usr/local/Cellar/python/2.7.1/include/python2.7/ -lpython2.7 chap3.c -o chap3

今使っている Python は homebrew でインストールしたものなので, そのヘッダファイルのあるディレクトリを -I (<-large ai) オプションで指定. ライブラリは /usr/local/lib/libpython2.7.dylib にあるので, -l (<-small el) オプションの指定だけで読めたみたい.

最初のコンパイルで PyArg_ParseTuple 云々で警告が出るけど, いったん無視.

3. Python のくだけた紹介

#include <Python.h>

int main(void)
{
    Py_Initialize();
    // this is the first comment
    PyObject *SPAM = PyInt_FromLong(1); // and this is the second comment
                                        // and now a third!
    PyObject *STRING = PyUnicode_FromString("// This is not a comment.");
    Py_Finalize();
    return 0;
}

これで作った chap3 を動かしても何も出ません. 出力ロジック書いてないから当たり前ですが.

とりあえず今日はここまで.

Comments

blog comments powered by Disqus

Licenses