Предупреждение: история IPython требует SQLite, ваша история не будет сохранена
Привет я использую Ubuntu release 12.10 (quantal) 32-бит с ядром Linux 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
и затем удален и переустановлен pysqlite с помощью pip
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.так что его не найти. Вот тогда я и нашел это так вопрос. Либо он не существует, либо его нет в моей переменной среды 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.так было и в моем PYTHONPATH. Для хихиканья я добавил path/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. Кто-нибудь может указать мне правильное направление?
4 ответов
Я также прочитал в нескольких местах, что мне, возможно, придется перестроить Python.
это правильно. SQLite является частью стандартной библиотеки,
и строится при компиляции Python. Есть несколько необязательный части
стандартной библиотеки, которую Python просто пропустит (с минимальным предупреждением, к сожалению)
если во время сборки отсутствуют зависимости, и sqlite является одним из них.
Вы должны иметь возможность просто установить libsqlite3-dev
,
затем пересобрать Python и вы должны быть набор.
Следите за сообщениями сборки,
поскольку они сообщают, какие модули они пропускают из-за отсутствующих зависимостей.
спасибо minrk для указывая мне в правильном направлении. Все, что мне нужно было сделать, это перестроить python. Я описал шаги ниже для тех, кто использует pythonbrew. Обратите внимание, что я уже установил libsqlite3-dev
пакет в разделе Вопрос.
во-первых, с правильной версией python и виртуальной средой, загруженной, выполните команду:
$ pip freeze -l > requirements.txt
это дает нам список текстовых файлов всех пакетов pip, которые были установлены в виртуальной среде для этого конкретного выпуска python в pythonbrew. Затем мы удаляем версию python из pythonbrew и переустанавливаем ее (это шаг" перестроить python"):
$ pythonbrew uninstall 2.7.3
$ pythonbrew install 2.7.3
после этого мы переключаемся на недавно установленную версию python 2.7.3 и создаем новую виртуальную среду (которую я назвал "sci"):
$ pythonbrew switch 2.7.3
$ pythonbrew venv create sci
$ pythonbrew venv use sci
В идеале вы должны иметь возможность запускать команду:
$ pip install -r requirements.txt
и по этой pip должен переустановить все модули что у вас было в виртуальной среде, прежде чем мы ударили эту версию python (2.7.3). По какой-то причине это не сработало для меня, поэтому я вручную установил все модули, используя индивидуальность pip.
$ ipython --pylab
Python 2.7.3 (default, Jan 5 2013, 18:48:27)
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.
и история IPython работает!
что сработало для меня (используя osx + homebrew + brewed python):
# Reinstall Python 2.7 with sqlite
brew remove python
brew install readline sqlite gdbm --universal
brew install python --universal --framework
# Reinstall iPython with correct bindings
pip uninstall ipython
pip install ipython
и вы должны быть хорошо идти.
вы должны перестроить свой python с поддержкой sqlite
sudo apt-get install libsqlite3-dev
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
tar -xvf Python-2.7.15.tgz
cd Python-2.7.15
./configure
make
sudo make install
воссоздать виртуальную среду, и вы должны быть хорошо идти
rmvirtualenv venv
mkvirtualenv -p python2 venv
workon venv
pip install -r requirements.txt
# or
pip install ipython