syncdbでsqliteのエラー

Ken published on
3 min, 483 words

Categories: 未分類

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を消せば済みそう。