Как получить файл _sqlite3.so?

Я установил Python 2.6.2. Я сделал это «локально», так как у меня нет прав root. В этой версии Python я хотел использовать модуль sqlite3 (в более ранних версиях он назывался pysqlite). По идее, я должен был без проблем использовать этот модуль, так как он должен быть включен по умолчанию в рассматриваемую версию Python. Однако у меня есть некоторые проблемы. Когда я печатаю:

from sqlite3 import *

Я получил:

Traceback (most recent call last):
  File "", line 1, in File "/home/verrtex/opt/lib/python2.6/sqlite3/init.py", line 24, in
    from dbapi2 import *
  File "/home/verrtex/opt/lib/python2.6/sqlite3/dbapi2.py", line 27, in
    from _sqlite3 import * 
ImportError: No module named _sqlite3

Как я уже говорил, возможная причина этой проблемы в том, что модуль пытается импортировать _sqlite3 и терпит неудачу, поэтому он не находит _sqlite3.so. Это объяснение подтверждается тем фактом, что у меня нет файла _sqlite3.so в моем каталоге «/home/verrtex/opt/lib/python2.6/lib-dynload». Итак, это проблема, которую я должен решить (я должен получить этот файл в этот каталог).

Я узнал, что для решения этой проблемы мне нужно «установить sqlite3 и перекомпилировать Python». Я также узнал, что проблема может быть решена путем «сборки из исходников и перемещения библиотеки в /usr/lib/python2.5/lib-dynload/».

Однако мне не ясно, что именно я должен делать. Должен ли я установить модуль python под названием «sqlite3» или я должен установить базу данных sqlite? Кстати, sqlite-база данных у меня уже глобально установлена ​​администратором. Могу ли я использовать его или мне все равно придется установить собственную базу данных? Кстати, у меня нет root-прав. Может ли это быть проблемой? Или мне нужно установить модуль python? Является ли отсутствие прав root проблемой в этом случае?

Мне также сказали взять исходные файлы со страницы загрузки SQLite, извлечь архив, перейти в расширенный каталог и выполнить:

./configure
make
make install

Затем мне нужно скопировать только что скомпилированные файлы в мой каталог Python. Должен ли я копировать все вновь скомпилированные файлы? И в какой именно каталог я должен копировать (в моем каталоге Python есть несколько подкаталогов)?

Был бы очень признателен за любую помощь, потому что я часто сталкиваюсь с этой проблемой.

P.S. Моя ОС - CentOS версии 5.3 (Final).


person Verrtex    schedule 25.09.2009    source источник
comment
Как вы установили Python? так как sqlite3 должен быть там   -  person mmmmmm    schedule 26.09.2009
comment
Я устанавливаю Python способом, предложенным sledge: stackoverflow.com/questions/1455642/   -  person Verrtex    schedule 26.09.2009
comment
У меня есть sqlite3.py, но нет _sqlite3.so. Подробнее см. ответ Алекса Мартелли здесь: stackoverflow.com/questions/1478479/   -  person Verrtex    schedule 26.09.2009


Ответы (2)


Ваш sys.path, скорее всего, не указывает на вашу локально установленную копию, или вы не используете Python 2.6.2, как вы думаете.

Если это не так, вам нужны заголовки разработки SQLite (sqlite-dev или что-то еще), а затем перекомпилируйте Python. Вам нужно обратить внимание на конец компиляции, потому что он жалуется на то, что он не собрал из-за отсутствующих зависимостей.

РЕДАКТИРОВАТЬ: перечитайте вопрос.

РЕДАКТИРОВАТЬ 2: Кроме того, пожалуйста, не делайте этого:

from module import *

Сделай это:

from module import what_i_need
import module2
person Jed Smith    schedule 25.09.2009
comment
Я уверен, что использую Python 2.6.2 (проверяю с помощью python -V). Я думаю, что проблема с _sqlite3.so, потому что его нет в /lib-dynload/, где он должен быть. - person Verrtex; 26.09.2009

Хотя вы могли найти свое решение, я просто записал свое для тех, кто застрял в той же проблеме.

Моя ОС — CentOS 6.3 (Final) с python2.6.

Я устанавливаю python2.7.3 в свою систему, но проблема все еще существует. (_sqlite3.so должен быть в /path/to/python2.7.3/lib/python2.7/lib-dynload после установки python2.7.3. Поскольку до установки python2.7 sqlite-autoconf-3071502.tar.gz был установлен.)

Затем я копирую /path/to/python2.6/lib/python2.6/lib-dynload/_sqlite3.so в путь python2.7. И введите python-shell:

>>> import sqlite3

or

>>> import _sqlite3

Никаких сообщений об ошибках.

К сожалению, чертова ошибка по-прежнему появлялась, когда я запускал свой скрипт на Python. Я устанавливаю sqlite-devel(sudo yum install sqlite-devel или загружаю здесь), а затем снова переустанавливаю python2.7.3. Запустите мой скрипт Python еще раз. Слава Богу! Проклятая ошибка наконец-то устранена.

person Java Xu    schedule 27.01.2013