10

I'm running Python 2.6 on Unix and when I run the interactive prompt (SQLite is supposed to be preinstalled) I get:

[root@idev htdocs]# python
Python 2.6 (r26:66714, Oct 23 2008, 16:25:34)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sqlite
>>>

How do I resolve this?

Jakob Bowyer
  • 33,878
  • 8
  • 76
  • 91
David McLaughlin
  • 5,108
  • 4
  • 34
  • 35

8 Answers8

14

The error:

ImportError: No module named _sqlite3

means that SQLite 3 does not find the associated shared library. On Mac OS X it's _sqlite3.so and it should be the same on other Unix systems.

To resolve the error you have to locate the _sqlite3.so library on your computer and then check your PYTHONPATH for this directory location.

To print the Python search path enter the following in the Python shell:

import sys
print sys.path

If the directory containing your library is missing you can try adding it interactively with

sys.path.append('/your/dir/here')

and try

import sqlite3

again. If this works you have to add this directory permanently to your PYTHONPATH environment variable.

PS: If the library is missing you should (re-)install the module.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
razong
  • 1,269
  • 11
  • 22
10
import sqlite3

sqlite3 - DB-API 2.0 interface for SQLite databases.

You are missing the .so (shared object) - probably an installation step. In my Linux python installation, _sqlite3 is at:

${somewhere}/lib/python2.6/lib-dynload/_sqlite3.so
gimel
  • 83,368
  • 10
  • 76
  • 104
10

Python 2.6 detects where the sqlite3 development headers are installed, and will silently skip building _sqlite3 if it is not available. If you are building from source, install sqlite3 including development headers. In my case, sudo yum install sqlite-devel sorted this out on a CentOS 4.7. Then, rebuild Python from source code.

Dickon Reed
  • 3,575
  • 4
  • 23
  • 25
1

Try this:

from pysqlite2 import dbapi2 as sqlite
André
  • 12,971
  • 3
  • 33
  • 45
1

On my system _sqlite3.so located at:

'/usr/lib/python2.6/lib-dynload/_sqlite3.so'

Check that the directory is in your sys.path:

>>> import sys; print(filter(lambda p: 'lib-dynload' in p, sys.path))
['/usr/lib/python2.6/lib-dynload']
jfs
  • 399,953
  • 195
  • 994
  • 1,670
0

I face the same problem. Steps to solve.

  1. Download latest sqlite3 from sqlite website. sqlite-autoconf*
  2. Install that in 3 simple steps
    1. ./configure
    2. make
    3. make install
  3. Rebuild the python make make install
kleopatra
  • 51,061
  • 28
  • 99
  • 211
Rohit Gupta
  • 61
  • 1
  • 7
0

The 2.5.5. Mac port of Python 2.5 now has this hint:

"py25-sqlite3 @2.5.4 (python, databases)
    This is a stub. sqlite3 is now built with python25"

And so an upgrade of the python25 port to python25 @2.5.5_0 made the import work again. Since sqlite3 is among the dependencies of python25, it is built anew when upgrading python25. Thus,

$ sudo port upgrade python25

does the trick on Mac OS X, ports collection.

98.
  • 1
0

Does that fix your problem?

Python 2.5.4 (r254:67916, May 31 2009, 16:56:01)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sqlite
>>> import sqlite3
>>>
tzot
  • 92,761
  • 29
  • 141
  • 204