読者です 読者をやめる 読者になる 読者になる

We All Get Old - Naskin Diary

Yet Another My Life On The Web

Python 一人勉強会 - 第3章 Pythonプログラムの起動方法

前回(Python 一人勉強会 - 第2章 Pythonプログラムの実行 - We All Get Old - Naskin Diaryに引き続き「初めてのPython 第3版」の第3章 プログラムの起動方法を読み進める。

対話型インタフェース

いつも確認用のsample.{言語の拡張子}みたいなプログラムを書いてしまうから対話型プログラミング/インターフェースってほとんど使う機会なかったけど小さなコードのテスト実行として有用なのか。

IDLE

GUIツールの紹介。vi使いの俺には不要かな、、、マシン速度が遅いわけじゃないけどいまいち使う気にならない、年なのだろうか。

他のプログラムへの組み込み

C言語だとこんな感じで動かせるらしい。さっそく挑戦。

#include <Python.h>
...
Py_Initialize();
PyRun_SimpleString("x = braze + sir + robin");


とりあえずいつものハローワールドで。

#include <Python.h>

int main(int argc, char *argv[]) {
	Py_Initialize();
	PyRun_SimpleString("print 'hello world'");
}


コンパイルするとヘッダファイルが見つからないといわれる><

$ gcc -c ./python_c.c
./python_c.c:1:20: error: Python.h: No such file or directory


/usr/include/python2.5 の下にあったので修正(環境:Mac OS X/Leopard)

#include <python2.5/Python.h>

int main(int argc, char *argv[]) {
	Py_Initialize();
	PyRun_SimpleString("print 'hello world'");
}


コンパイルは成功するもオブジェクトのリンクに失敗><

$ gcc -c ./python_c.c
$ gcc -o ./python_c ./python_c.o
Undefined symbols:
  "_Py_Initialize", referenced from:
      _main in python_c.o
  "_PyRun_SimpleStringFlags", referenced from:
      _main in python_c.o
ld: symbol(s) not found
collect2: ld returned 1 exit status


ここ(C言語アプリケーションに Pythonを組み込む - ふにゃるん)を参考にコンパイルコマンドを再実行。

$ gcc -o ./python_c python_c.o -L/usr/lib/python2.5 -lpython2.5
$ ./python_c 
hello world
$

補完されました。おめでとう、おめでとう、ありがとう。


参考に下記事は2006年に書かれている。あいかわらず4年ほど周回遅れなおいら。