你好,我正在使用Ubuntu 12.10(quantal)32位版本,并搭配Linux Kernel 3.5.0-21-generic。我想让IPython的历史记录功能正常工作。我已经使用pythonbrew和虚拟环境进行了设置,并使用pip安装了IPython。目前,在终端中启动IPython时,我会得到以下提示:
WARNING: IPython History requires SQLite, your history will not be saved
Python 2.7.3 (default, Nov 8 2012, 18:25:10)
Type "copyright", "credits" or "license" for more information.
IPython 0.13.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
在第一行的警告信息上搜索,我找到了这个问题报告,于是我回去安装了以下内容:
sudo apt-get install libsqlite0 libsqlite0-dev libsqlite3-0 libsqlite3-dev
然后使用pip移除并重新安装pysqlite
pip uninstall pysqlite
pip install pysqlite
之后我想通过导入模块来检查安装:
Python 2.7.3 (default, Nov 8 2012, 18:25:10)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/me/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/home/me/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3
现在看来无法找到文件 _sqlite3.so。我发现了这个 SO 问题。它要么不存在,要么不在我的 PYTHONPATH 环境变量中。搜索该文件,我得到:
$ locate _sqlite3.so
/home/me/Desktop/.dropbox-dist/_sqlite3.so
/home/me/epd/lib/python2.7/lib-dynload/_sqlite3.so
/usr/lib/python2.7/lib-dynload/_sqlite3.so
所以文件是存在的,但是当我查看我的Python路径时:
import sys
for p in sys.path:
print p
在我的PYTHONPATH中没有包含任何包含_sqlite3.so的路径。为了好玩,我在终端中将路径/usr/lib/python2.7/lib-dynload添加到我的PYTHONPATH中,然后再次尝试导入sqlite3:
Python 2.7.3 (default, Nov 8 2012, 18:25:10)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append("/usr/lib/python2.7/lib-dynload")
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/me/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/home/me/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: /usr/lib/python2.7/lib-dynload/_sqlite3.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8
哦,糟糕了。我完全卡住了。有人能帮我吗?有些地方还说我可能需要重建Python。我不知道如何在pythonbrew中做这个。有人能指导我一下吗?