您好,我正在使用带有 Linux 内核 3.5.0-21-generic 的 Ubuntu 12.10(量子)32 位版本。我正在尝试让 IPython 的 History 发挥作用。我已经使用 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.
搜索第一行的警告,我找到了this issue report ,所以我回去安装了以下内容:
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。那是我找到this SO question的时候.它要么不存在,要么不在我的 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
上述包含 _sqlite3.so 的路径均未包含在我的 PYTHONPATH 中。为了咯咯笑,我在终端中将路径/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 中执行此操作。谁能指出我正确的方向?
最佳答案
I've also read in a few places that I may have to rebuild Python.
这是正确的。 SQLite 是标准库的一部分,
并且是在编译 Python 时构建的。有一些“可选”部分
标准库的一部分,Python 将简单地跳过它(不幸的是,警告很少)
如果在构建时缺少依赖项,sqlite 就是其中之一。
你应该能够只安装 libsqlite3-dev
,
然后重建 Python,你应该被设置。
密切关注构建消息,
因为他们确实报告了由于缺少依赖项而跳过了哪些模块。
关于python - 警告 : IPython History requires SQLite, 您的历史将不会被保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173271/