在Linux上如果首先安装了python,然后在安装sqlite3的话,在 python ‘import sqlite3' 就会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/linux/depot/Python-2.5/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/linux/depot/Python-2.5/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3
在网上查了一下,说只要重新编译一下python,重装一次就可以了,所以我重新编译安装了一次
安装在前面的redhat 升级python到2.7博文有提过
但是编译安装之后还是报错。。。
在编译的过程中我发现后台报的一个错误:
Failed to build these modules:
_sqlite3
在网上查了一下解决办法:编辑源码下的connection.c这个文件
vi Python-2.7.3/Modules/_sqlite/connection.c
在
#include "cache.h"
#include "module.h"
#include "connection.h"
#include "statement.h"
#include "cursor.h"
#include "prepare_protocol.h"
#include "util.h"
#include "sqlitecompat.h"
#include "pythread.h"
#define ACTION_FINALIZE 1
#define ACTION_RESET 2
#if SQLITE_VERSION_NUMBER >= 3003008
#ifndef SQLITE_OMIT_LOAD_EXTENSION
#define HAVE_LOAD_EXTENSION
#endif
#endif
下面添加
#ifdef SQLITE_INT64_TYPE
typedef SQLITE_INT64_TYPE sqlite_int64;
typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
#elif defined(_MSC_VER) || defined(__BORLANDC__)
typedef __int64 sqlite_int64;
typedef unsigned __int64 sqlite_uint64;
#else
typedef long long int sqlite_int64;
typedef unsigned long long int sqlite_uint64;
#endif
typedef sqlite_int64 sqlite3_int64;
typedef sqlite_uint64 sqlite3_uint64;
再次make,没有报错。
附注:
解决问题是借鉴了这个博文:
http://blog.hijiam.com/page/2
来源:oschina
链接:https://my.oschina.net/u/1043369/blog/159837