2009-09-25 2 views
1

Я хотел бы иметь интерфейс между Python и sqlite. Оба установлены на машине. У меня была старая версия Python (2.4.3). Таким образом, pysqlite не был включен по умолчанию. Во-первых, я попытался решить эту проблему, установив pysqlite, но мне это не удалось. Моя вторая попытка решить проблему состояла в том, чтобы установить новую версию Python. У меня нет прав root на машине. Поэтому я установил его локально. Новая версия Python - это (2.6.2). Насколько я знаю, эта версия должна содержать pysqlite по умолчанию (и теперь она называется «sqlite3», а не «pysqlite2», как и раньше).Почему мой python не видит pysqlite?

Однако, если я типа:

from sqlite3 import * 

я получаю:

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

Это следует отметить, что приведенное выше сообщение об ошибке отличается от тех, которые я получаю, если я типа «от блаблабла импорт * ":

Traceback (most recent call last):
File "", line 1, in ImportError: No module named blablabla

Итак, питон увидеть что-то связанное с pysqlite, но все еще есть некоторые проблемы. Может ли кто-нибудь помочь мне, мольбы, с этим вопросом?

P.S. Я использую выпуск CentOS 5.3 (Final).

+0

Какой дистрибутив вы используете? – voyager

+0

CentOS релиз 5.3 (Final). – Verrtex

ответ

1

Windows, _sqlite3.pyd проживает в C:\Python26\DLLs. На * nix, он должен быть по пути, аналогичному /usr/lib/python2.6/lib-dynload/_sqlite3.so. Скорее всего, либо вам не хватает этой общей библиотеки, либо ваш PYTHONPATH настроен неправильно.

Поскольку вы сказали, что не были установлены как суперпользователь, это, вероятно, неправильный путь; Вы можете вручную иметь Python искать путь для _sqlite3.so делая

import sys 
sys.path.append("/path/to/my/libs") 

но предпочтительный подход, вероятно, будет изменить PYTHONPATH в вашем .bashrc или другого входа в файл.

+0

У меня есть каталог /home/verrtex/opt/lib/python2.6/sqlite3. В этом каталоге у меня есть следующие файлы: dbapi2.py dbapi2.pyc dbapi2.pyo dump.py dump.pyc dump.pyo __init__.py __init __. Pyc __init __. Pyo – Verrtex

+0

Я изменил PYTHONPATH в .bashrc и .bash_profile. И я источник этих файлов. Это не помогает. – Verrtex

+0

Кстати, как я могу найти каталог, содержащий библиотеку pysqlite? Какой файл следует искать? _sqlite3.so? – Verrtex

1

У вас есть «slite3.py» (на самом деле его эквивалент для пакета, sqlite3/__init__.py, так import sqlite3 само по себе хорошо, но этот модуль в очередях пытается import _sqlite3 и выходит из строя, так что это не находя _sqlite3.so. Это должно быть в python2.6/lib-dynload под вашим локальным корнем Python, а ld должно быть указано, что у него есть разрешение на загрузку динамических библиотек из этого каталога (обычно путем установки соответствующих переменных среды, например, в вашем .bashrc). У вас есть этот каталог lib-dynload? это? Какие переменные окружения у вас есть, которые содержат строку LD (верхний регистр), то есть env|grep LD в командной строке?

+0

У меня /home/verrtex/opt/lib/python2.6/lib-dynload, но нет * sql * файлов. «env | grep LD» говорит мне «OLDPWD =/home/verrtex/opt/lib/python2.6» – Verrtex

+0

Я хотел сказать, что в моем /home/verrtex/opt/lib/python2.6/lib-dynload каталоге есть нет файлов, содержащих подстроку sql. – Verrtex

 Смежные вопросы

  • Нет связанных вопросов^_^