2009-09-25 7 views
3

J'ai installé Python 2.6.2 .. Je l'ai fait "localement" car je n'ai pas les permissions root. Avec cette version de Python je voulais utiliser le module appelé "sqlite3" (il s'appelle "pysqlite" dans les versions antérieures). En théorie, je devais pouvoir utiliser ce module sans aucun problème car il est censé être inclus par défaut dans la version considérée de Python. Cependant, j'ai quelques problèmes. Quand je tape:Comment obtenir le fichier _sqlite3.so?

from sqlite3 import * 

Je reçois:

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 

Comme je l'ai déjà dit à la raison possible de ce problème est que le module tente d'importer _sqlite3 et échoue, il est donc de ne pas trouver _sqlite3.so. Cette explication est supportée par le fait que je n'ai pas de fichier _sqlite3.so dans mon répertoire "/home/verrtex/opt/lib/python2.6/lib-dynload". Donc, c'est le problème que je dois résoudre (je dois obtenir ce fichier dans ce répertoire).

J'ai découvert que pour résoudre ce problème, je dois "installer sqlite3 et recompiler Python". J'ai également découvert que le problème peut être résolu en "construisant à partir de la source et en déplaçant la bibliothèque vers /usr/lib/python2.5/lib-dynload/".

Cependant, je ne sais pas exactement ce que je devrais faire. Devrais-je installer le module python appelé "sqlite3" ou je devrais installer sqlite-database? Par ailleurs, j'ai déjà sqlite-database globalement installé par l'administrateur. Puis-je l'utiliser ou dois-je encore installer ma propre base de données? En passant, je n'ai pas les permissions root. Peut-il être un problème? Ou dois-je installer un module python? L'absence de permissions root est-elle un problème, dans ce cas?

I a également été dit à, prendre des fichiers sources de SQLite page de téléchargement, extraire l'archive, déplacez le répertoire étendu et exécuter:

./configure 
make 
make install 

Ensuite, je dois copier les fichiers nouvellement compilés à mon répertoire Python. Dois-je copier tous les nouveaux fichiers compilés? Et vers quel répertoire devrais-je copier (mon répertoire Python a des sous-répertoires)?

J'apprécierais beaucoup toute aide, parce que je m'empile avec ce problème pour un wile.

P.S. Mon OS est la version 5.3 de CentOS (Final).

+0

Comment avez-vous installé Python? comme sqlite3 devrait être là – Mark

+0

J'installe Python de la manière suggérée par la luge: http://stackoverflow.com/questions/1455642/how-to-build-sqlite-for-python-2-4 – Verrtex

+0

J'ai sqlite3.py mais je n'ai pas _sqlite3.so. Pour plus de détails voir la réponse par Alex Martelli ici: http://stackoverflow.com/questions/1478479/pourquoi-mon-python-does-not-see-pysqlite – Verrtex

Répondre

1

Votre sys.path ne pointera probablement pas sur votre copie installée localement, ou vous n'utiliserez pas Python 2.6.2 comme vous le pensez. Si rien de tout cela n'est le cas, vous avez besoin des en-têtes de développement SQLite (sqlite-dev ou peu importe), puis recompilez Python. Vous devez faire attention à la fin de la compilation, car il se plaint de ce qu'il n'a pas construit en raison de dépendances manquantes.

EDIT: question de relecture.

EDIT 2: En outre, s'il vous plaît ne fais pas ça:

from module import * 

Faites ceci:

from module import what_i_need 
import module2 
+0

Je suis sûr, je cours Python 2.6.2 (je vérifiez avec "python -V"). Je pense que "_sqlite3.so" est un problème car il n'est pas dans "/ lib-dynload /" où il devrait être. – Verrtex

0

Même si vous avez trouvé votre solution, je viens d'écrire la mienne vers le bas pour quelqu'un qui sont coincés dans le même problème.

Mon système d'exploitation est CentOS 6.3 (Final) avec python2.6. J'installe python2.7.3 dans mon système, mais le problème est toujours là. (_sqlite3.so devrait être /path/to/python2.7.3/lib/python2.7/lib-dynload après python2.7.3 a été installé. Parce qu'avant python2.7 a été installé, sqlite-autoconf-3071502.tar.gz a été installé.)

je copie alors le /path/to/python2.6/lib/python2.6/lib-dynload/_sqlite3.so au chemin du python2.7. Et tapez le shell python:

>>> import sqlite3

ou

>>> import _sqlite3

Aucun rapport d'erreur.

Malheureusement, la foutue erreur est apparue comme avant quand je cours mon script python. Je installe sqlite-devel (sudo yum install sqlite-devel ou télécharger here), puis réinstallez python2.7.3. Exécutez à nouveau mon script python. Dieu merci! La foutue erreur a finalement été résolue.

Questions connexes