syncdbでsqliteのエラー
djangoを入れてみたものの、sqlite3のモジュール部分で動作せず。
python manage.py syncdbでなぜかエラー。
Error loading sqlite3 module: No module named _sqlite3
環境はUbuntu 8.10にPython2.6をソースでインストール。
そこに、djangoをsetup.pyでインストールした。
Web上でも似たような人たちがいて、人それぞれ対応が違う。
ソースで入れ直す人、CentOSでdevelパッケージを入れたりしてる人。
結局、直接的な解決に至らなかったので、自分で対応を考えることにした。
まず、_sqliteが無いと言われているので存在を確認。
Python2.6ディレクトリ配下には存在せず ![]()
Python2.5は・・・あった!
たぶん、python-pysqlite2というパッケージが入っているからだと思う。
というわけで、_sqliteを使うべく、Python2.6のライブラリとして使うためにシンボリックリンク作成。
そしたら、unicodeなんとかでエラー。
2.6の役割の一つに3.0への移行があるから、それに関する違いでエラーが出たっぽい。
じゃ、setup.pyで_sqliteを作ればいっか、と調べてみるとpysqlite2というライブラリがあるっぽい。
dpkgではpython-pysqlite2として配布されてるやつだな。
pysqlite – Trac
http://oss.itsystementwicklung.de/trac/pysqlite
ここからダウンロードしてきて、インストールを実行。
python setup.py install
インストール途中でエラー発生。
sqliteのソースが無いようなことを言われたのでソースをインストール。
sudo apt-get install libsqlite3-dev
yumパッケージで言う”-devel”みたいなパッケージっぽい。
再度、pysqlite2をsetup.pyでインストール。
このあと、syncdbを試したら動作しました。
無理な構成にもなってないし、この対応でよかった気がする。
setup.pyでインストールする時はそのバージョン配下のライブラリとして増えていくみたいなので、2.6が不要となったら/opt/python2.6を消せば済みそう。