2008-10-24 2 views
10

Я бегу на Python 2.6 на Unix и когда я запустить интерактивный запрос (SQLite должен быть предустановлен) я получаю:Невозможно импортировать SQLite с Python 2.6

[[email protected] 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 
>>> 

Как решить эту проблему?

ответ

14

Ошибка:

ImportError: No module named _sqlite3 

означает, что SQLite 3 не находит соответствующую общую библиотеку. В Mac OS X это _sqlite3.so, и он должен быть таким же на других Unix-системах.

Для решения этой проблемы вы должны найти библиотеку _sqlite3.so на своем компьютере, а затем проверить свой PYTHONPATH для этой папки.

Чтобы напечатать путь поиска Python введите следующую команду в оболочке Python:

import sys 
print sys.path 

Если каталог, содержащий вашу библиотеку отсутствует, вы можете попробовать добавить его в интерактивном режиме с

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

и попробовать

import sqlite3 

еще раз. Если это работает, вы должны постоянно добавить этот каталог в переменную среды PYTHONPATH.

PS: Если библиотека отсутствует, вы должны (повторно) установить модуль.

10
import sqlite3 

sqlite3 - DB-API 2.0 интерфейс для баз данных SQLite.

Вам не хватает .so (общий объект) - возможно, шаг установки. В моей установке питона Linux, _sqlite3 находится по адресу:

${somewhere}/lib/python2.6/lib-dynload/_sqlite3.so 
1

Попробуйте это:

from pysqlite2 import dbapi2 as sqlite 
1

На моей системе _sqlite3.so, расположенной по адресу:

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

Убедитесь, что каталог находится в вашем sys.path:

>>> import sys; print(filter(lambda p: 'lib-dynload' in p, sys.path)) 
['/usr/lib/python2.6/lib-dynload'] 
10

Python 2.6 определяет, где sqlite3 установлены заголовки разработки и будут тихо пропускать b uilding _sqlite3, если он недоступен. Если вы строите исходный код, установите sqlite3, включая заголовки разработчиков. В моем случае sudo yum install sqlite-devel отсортировал это на CentOS 4.7. Затем переустановите Python из исходного кода.

+0

просьба уточнить что означает «перестроить Python из исходного кода». благодаря – 2011-07-29 20:04:40

0

Устранение этой проблемы?

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 
>>> 
0

2.5.5. Mac-порт Python 2.5 теперь имеет этот намек:

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

И так что модернизация Python25 порта в python25 @2.5.5_0 снова сделал работу импорта. Поскольку sqlite3 входит в число зависимостей python25, , он создается заново при обновлении python25. Таким образом,

$ sudo port upgrade python25 

делает трюк на Mac OS X, коллекции портов.

0

У меня такая же проблема. Шаги, чтобы решить.

  1. Загрузить последний sqlite3 с сайта sqlite. SQLite-Autoconf *
  2. Установить, что в 3 простых шага
    1. ./configure
    2. сделать
    3. сделать установку
  3. Rebuild питона сделать сделать установку
Смежные вопросы