pysqlite
Windows環境(Python2.5)で作ったあぷりをCentOS4.3に移植して実行してみたところ見事にエラー・・・sqlite3モジュールがないって怒られた・・・
CentOS4.3のPythonは2.4でsqlite3のモジュールは2.5から標準パッケージになったらしい。
早速モジュールをインストールしようと検索してみるとどうやらpysqliteなるモジュールをインストールすればよいことがわかりダウンロードしてインストールしてみる
#wget http://pysqlite.googlecode.com/files/pysqlite-2.5.6.tar.gz #tar zxvf pysqlite-2.5.6.tar.gz #cd pysqlite-2.5.6 #python setup.py install
エラーメッセージが〜
running install running build running build_py creating build creating build/lib.linux-i686-2.4 creating build/lib.linux-i686-2.4/pysqlite2 copying lib/__init__.py -> build/lib.linux-i686-2.4/pysqlite2 copying lib/dump.py -> build/lib.linux-i686-2.4/pysqlite2 copying lib/dbapi2.py -> build/lib.linux-i686-2.4/pysqlite2 creating build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/__init__.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/userfunctions.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/factory.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/py25tests.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/transactions.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/dump.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/hooks.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/regression.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/types.py -> build/lib.linux-i686-2.4/pysqlite2/test copying lib/test/dbapi.py -> build/lib.linux-i686-2.4/pysqlite2/test running build_ext building 'pysqlite2._sqlite' extension creating build/temp.linux-i686-2.4 creating build/temp.linux-i686-2.4/src gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fPIC -DMODULE_NAME="pysqlite2.dbapi2" -DSQLITE_OMIT_LOAD_EXTENSION=1 -I/usr/include/python2.4 -c src/module.c -o build/temp.linux-i686-2.4/src/module.o src/module.c:24 から include されたファイル中: src/connection.h:33:21: error: sqlite3.h: そのようなファイルやディレクトリはありません In file included from src/module.c:24: src/connection.h:38: error: expected specifier-qualifier-list before ‘sqlite3’ In file included from src/module.c:25: src/statement.h:37: error: expected specifier-qualifier-list before ‘sqlite3’ src/module.c: In function ‘module_complete’: src/module.c:99: 警告: implicit declaration of function ‘sqlite3_complete’ src/module.c: トップレベル: src/module.c:265: error: ‘SQLITE_OK’ undeclared here (not in a function) src/module.c:266: error: ‘SQLITE_DENY’ undeclared here (not in a function) src/module.c:267: error: ‘SQLITE_IGNORE’ undeclared here (not in a function) src/module.c:268: error: ‘SQLITE_CREATE_INDEX’ undeclared here (not in a function) src/module.c:269: error: ‘SQLITE_CREATE_TABLE’ undeclared here (not in a function) src/module.c:270: error: ‘SQLITE_CREATE_TEMP_INDEX’ undeclared here (not in a function) src/module.c:271: error: ‘SQLITE_CREATE_TEMP_TABLE’ undeclared here (not in a function) src/module.c:272: error: ‘SQLITE_CREATE_TEMP_TRIGGER’ undeclared here (not in a function) src/module.c:273: error: ‘SQLITE_CREATE_TEMP_VIEW’ undeclared here (not in a function) src/module.c:274: error: ‘SQLITE_CREATE_TRIGGER’ undeclared here (not in a function) src/module.c:275: error: ‘SQLITE_CREATE_VIEW’ undeclared here (not in a function) src/module.c:276: error: ‘SQLITE_DELETE’ undeclared here (not in a function) src/module.c:277: error: ‘SQLITE_DROP_INDEX’ undeclared here (not in a function) src/module.c:278: error: ‘SQLITE_DROP_TABLE’ undeclared here (not in a function) src/module.c:279: error: ‘SQLITE_DROP_TEMP_INDEX’ undeclared here (not in a function) src/module.c:280: error: ‘SQLITE_DROP_TEMP_TABLE’ undeclared here (not in a function) src/module.c:281: error: ‘SQLITE_DROP_TEMP_TRIGGER’ undeclared here (not in a function) src/module.c:282: error: ‘SQLITE_DROP_TEMP_VIEW’ undeclared here (not in a function) src/module.c:283: error: ‘SQLITE_DROP_TRIGGER’ undeclared here (not in a function) src/module.c:284: error: ‘SQLITE_DROP_VIEW’ undeclared here (not in a function) src/module.c:285: error: ‘SQLITE_INSERT’ undeclared here (not in a function) src/module.c:286: error: ‘SQLITE_PRAGMA’ undeclared here (not in a function) src/module.c:287: error: ‘SQLITE_READ’ undeclared here (not in a function) src/module.c:288: error: ‘SQLITE_SELECT’ undeclared here (not in a function) src/module.c:289: error: ‘SQLITE_TRANSACTION’ undeclared here (not in a function) src/module.c:290: error: ‘SQLITE_UPDATE’ undeclared here (not in a function) src/module.c:291: error: ‘SQLITE_ATTACH’ undeclared here (not in a function) src/module.c:292: error: ‘SQLITE_DETACH’ undeclared here (not in a function) src/module.c: In function ‘init_sqlite’: src/module.c:419: 警告: implicit declaration of function ‘sqlite3_libversion’ src/module.c:419: 警告: passing argument 1 of ‘PyString_FromString’ makes pointer from integer without a cast error: command 'gcc' failed with exit status 1 [root@vobis-sa01 pysqlite-2.5.6]# python Python 2.4.3 (#1, Sep 3 2009, 15:37:12) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
うーん、急いでいるのに・・・sqlite3はインストールされているしと思いつつメッセージを眺めているとsqlite3.hがないのが原因と思われだいたいヘッダーファイルがないと言うことは・・・試しにsqlite-develパッケージをインストールしてから再度インストールしたら無事完了♪
再度プログラムをうごかしてみるとグローバル変数sqlite3がないと怒られた、どうやらpysqliteモジュールとsqlite3モジュールではちょっと名前が違うらしいので手抜きな修正で無事動いた!!
#import sqlite3 ←Python2.5の時 from pysqlite2 import dbapi2 as sqlite3 ←Python2.4の時