Как мне обращаться с программными пакетами?

Я пытаюсь установить pysqlite и у меня проблемы с этим. Я обнаружил, что наиболее вероятной причиной этого являются отсутствующие заголовки sqlite, и мне нужно их установить. Моя платформа: CentOS версии 5.3 (Final). У меня Python-2.6.2.

Я также узнал, что мне нужны файлы .rpm. Насколько они у меня есть, я выполняю:

rpm -i sqlite3-devel-3.n.n.n.rpm

и все должно быть хорошо.

Однако я не знаю, где найти файл sqlite3-devel-3.n.n.n.rpm. Должен ли он уже быть в моей системе? Я не смог найти его с помощью «найти sqlite3-devel-3». Должен ли я скачать этот файл? Если да, то где я могу найти его и какую версию мне следует использовать? Я имею в виду, что файл .rpm должен, вероятно, соответствовать версии sqlite, которая установлена ​​на моем компьютере? Если это так, как я могу узнать версию моего sqlite?

Если я наберу «из pysqlite2 импортировать dbapi2 как sqlite», я получаю:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pysqlite2

"yum search pysqlite" дает мне следующее:

Loaded plugins: fastestmirror
Excluding Packages in global exclude
list Finished
==== Matched: pysqlite ==== python-sqlite.x86_64 : Python bindings
for sqlite.

Кстати, у меня есть следующий каталог: /home/myname/opt/lib/python2.6/sqlite3 и там у меня есть следующие файлы:

dbapi2.py  dbapi2.pyc  dbapi2.pyo 
dump.py  dump.pyc  dump.pyo 
__init__.py  __init__.pyc  __init__.pyo  test

Если я наберу «import unittest», а затем «import sqlite3 as sqlite», я получу:

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

Заранее спасибо.


person Verrtex    schedule 24.09.2009    source источник


Ответы (3)


Вы можете использовать buildout для создания локализованной версии вашего проекта. Это установит все необходимые пакеты без доступа sudo к серверу.

Чтобы попробовать, сделайте следующее:

mkdir tmp
cd tmp
wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
python bootstrap.py init
vim buildout.cfg

отредактируйте buildout.cfg и замените его следующим:

[buildout]
parts = sqlite 

[sqlite]
recipe = zc.recipe.egg
eggs = pysqlite
interpreter = mypython

Теперь запустите ./bin/buildout, чтобы пересобрать проект. Это загрузит все необходимые пакеты и создаст для вас новый интерпретатор, который вы можете использовать для проверки доступа к sqlite.

./bin/buildout
./bin/mypython
>>> import sqlite3

Это дает вам контролируемую среду, в которой вы можете развиваться. Чтобы узнать больше о buildout, вы можете посмотреть видео с pycon 2009 на Setuptools, Distutils и Buildout.

Яйца и развертывание сборки в Python — часть 1

Яйца и развертывание сборки в Python — часть 2

Яйца и развертывание Buildout в Python — часть 3

Удачи

person Taras Mankovski    schedule 24.09.2009

Python 2.6 (и некоторые более ранние версии) включает sqlite ссылка на библиотеку Python org, поэтому вам не нужно этого делать. Просто импортируйте его и запустите

person mmmmmm    schedule 24.09.2009
comment
Если я набираю from pysqlite2 import dbapi2 as sqlite, я получаю: Traceback (последний последний вызов): файл ‹stdin›, строка 1, в ‹module› ImportError: нет модуля с именем pysqlite2 - person Verrtex; 24.09.2009
comment
Найдите в своем репозитории Centos, используя функцию поиска yum. yum search pysqlite Я получаю: python-sqlite.i386 1.1.7-1.2.1 установлен Соответствует: pysqlite.org В моей системе есть модуль sqlite3. - person whatnick; 24.09.2009
comment
Когда библиотека была включена в Python, она была предназначена для sqlite3 и переименована в sqlite3. Я сомневаюсь, что вам нужен более старый sqlite2. - person mmmmmm; 24.09.2009
comment
Но я также не могу импортировать sqlite3 (добавляю некоторые детали к моему основному вопросу). - person Verrtex; 24.09.2009
comment
Как был установлен python - я ожидаю, что все библиотеки и т. д. будут в /usr/ или /opt не в вашем домашнем каталоге - person mmmmmm; 24.09.2009

Как правило, вы должны установить модуль python sqlite через yum, что-то вроде:

yum install python-sqlite

а затем отредактируйте свой код, изменив sqlite2 ссылки на sqlite3.

Кстати, всякий раз, когда вы читаете инструкции по установке sqlite3-devel-3.n.n.n.rpm, части n не являются буквальными; они должны быть заменены числами, указывающими версию пакета rpm.

person tzot    schedule 24.09.2009
comment
Когда я использую yum install python-sqlite, я получаю: Для выполнения этой команды вам нужно быть пользователем root. Могу ли я установить sqlite без привилегий root? - person Verrtex; 24.09.2009
comment
Как правило, нет. Итак, если вы можете использовать sudo на этой машине, вам следует выполнить sudo yum install python-sqlite и ввести свой пароль, или вы должны попросить системного администратора сделать это за вас. - person tzot; 24.09.2009