我正在尝试在运行Debian 5的VPS上运行Django应用程序.当我运行一个演示应用程序时,它会返回此错误:
File "/usr/local/lib/python2.5/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/usr/local/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 30, inraise ImproperlyConfigured, "Error loading %s: %s" % (module, exc) ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3
看一下Python安装,它会给出同样的错误:
Python 2.5.2 (r252:60911, May 12 2009, 07:46:31) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sqlite3 Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in from dbapi2 import * File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in from _sqlite3 import * ImportError: No module named _sqlite3 >>>
在网上阅读,我了解到Python 2.5应该包含所有必需的SQLite包装器.我是否需要重新安装Python,还是有其他方法可以启动并运行此模块?
看来你的makefile没有包含相应的.so
文件.您可以使用以下步骤更正此问题:
安装sqlite-devel
(或libsqlite3-dev
在一些基于Debian的系统上)
使用重新配置和重新编译Python ./configure --enable-loadable-sqlite-extensions && make && sudo make install
注意
该sudo make install
部分将python版本设置为系统范围的标准,这可能会产生不可预见的后果.如果在工作站上运行此命令,您可能希望将它与现有的python 一起安装,这可以完成sudo make altinstall
.
我有同样的问题(python2.5
从Ubuntu Lucid上的源代码构建),并import sqlite3
抛出同样的异常.我libsqlite3-dev
从包管理器安装,重新编译python2.5,然后导入工作.
在使用pyenv时,我在Ubuntu上遇到了与Python 3.5相同的问题.
如果你使用pyenv安装python ,它被列为常见的构建问题之一.要解决它,删除已安装的python版本,安装要求(针对此特定情况libsqlite3-dev
),然后重新安装python版本.
这就是我为了让它发挥作用所做的.
我正在使用安装了python 2.7.5的pythonbrew(使用pip).
我首先做了Zubair(上面)所说的并运行了这个命令:
sudo apt-get install libsqlite3-dev
然后我运行了这个命令:
pip install pysqlite
这解决了数据库问题,我在运行时得到了确认:
python manager.py syncdb
安装sqlite-devel
包:
yum install sqlite-devel -y
从源代码重新编译python:
./configure make make altinstall
我的_sqlite3.so位于/usr/lib/python2.5/lib-dynload/_sqlite3.so中.从你的路径来看,你应该有文件/usr/local/lib/python2.5/lib-dynload/_sqlite3.so.
请尝试以下方法:
find /usr/local -name _sqlite3.so
如果找不到该文件,则Python安装可能出错.如果是,请确保它安装的路径位于Python路径中.在Python shell中,
import sys print sys.path
在我的例子中,/ usr/lib/python2.5/lib-dynload在列表中,因此它能够找到/usr/lib/python2.5/lib-dynload/_sqlite3.so.
我发现很多人都遇到这个问题,因为多版本的Python,在我自己的vps(cent os 7 x64)上,我用这种方式解决了它:
找到文件"_sqlite3.so"
find / -name _sqlite3.so
出: /usr/lib64/python2.7/lib-dynload/_sqlite3.so
找到你想要使用的python标准库的目录,
为了我 /usr/local/lib/python3.6/lib-dynload
复制文件:
cp /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload
最后,一切都会好的.
我最近尝试在我的Ubuntu 11.04桌面上安装python 2.6.7以进行一些开发工作.遇到类似的问题到这个线程.我想要修复它:
调整setup.py文件以包含正确的sqlite dev路径.来自setup.py的代码段:
def sqlite_incdir: sqlite_dirs_to_check = [ os.path.join(sqlite_incdir, '..', 'lib64'), os.path.join(sqlite_incdir, '..', 'lib'), os.path.join(sqlite_incdir, '..', '..', 'lib64'), os.path.join(sqlite_incdir, '..', '..', 'lib'), '/usr/lib/x86_64-linux-gnu/' ]
我添加的位是'/ usr/lib/x86_64-linux-gnu /'.
在运行make之后我没有得到任何警告说没有构建sqlite支持(即,它构建正确:P),但是在运行之后make install
,sqlite3仍然没有导入相同的" ImportError: No module named _sqlite3" whe running "import sqlite3
".
因此,库已编译,但未移至正确的安装路径,因此我复制了.so
文件(cp /usr/src/python/Python-2.6.7/build/lib.linux-x86_64-2.6/_sqlite3.so /usr/local/python-2.6.7/lib/python2.6/sqlite3/
- 这些是我的构建路径,您可能需要将它们调整到您的设置).
瞧!SQLite3支持现在有效.
这在Redhat Centos 6.5中对我有用:
yum install sqlite-devel pip install pysqlite