Отсутствует sqlite3 после компиляции Python3

Мой вопрос очень похож на несколько других. После компиляции Python вручную sqlite3 отсутствует:

введите описание изображения здесь

Основное отличие состоит в том, что я использую систему Debian Linux (в отличие от этого вопроса: OS X 10.8.2 python 3 import sqlite error) и Python3 (в отличие от этого и множества других вопросов: Невозможно импортировать SQLite с Python 2.6).

Я надеялся получить рекомендации относительно того, в каком направлении искать неисправность. Согласно некоторым вопросам, связанным с Linux, но более старым Python, ошибка, подобная той, которую я получаю, может быть вызвана отсутствующий ресурс во время связывания или что-то в этом роде (_sqlite3.so). У меня есть два таких файла в моей системе, оба в старых установках Python, ... но ничего не связанного с Python3. Или одного из них достаточно? Или они говорят: установить пакет libsqlite3-dev, а затем перекомпилировать Python. Я сделал это, но не понимаю, как наличие этого пакета в моей системе повлияет на процесс компиляции. И действительно, этого не произошло. Вторая компиляция дала мне второй Python без sqlite3.

Хотел бы я просто сделать apt-get install python3, но Debian, по своей стабильности, имеет только Python 3.2, где мне нужна последняя версия. Мысли?


person Brian Peterson    schedule 11.09.2013    source источник


Ответы (3)


Вам необходимо установить libsqlite3 (на основе Debian) или sqlite-devel (на основе RedHat) и связанные файлы заголовков перед компиляцией Python, потому что Python должен найти их в процессе компиляции.

Вы обязательно запустили:

  1. ./configure
  2. make
  3. make install

В этом конкретном порядке? Без пропущенных шагов?

person Thomas Orozco    schedule 11.09.2013
comment
Как заставить Python находить их в процессе компиляции? Я упомянул, что пытался установить именно этот пакет. - person Brian Peterson; 12.09.2013
comment
@Bepetersn Я обновлял ответ, вы можете проверить, выполнили ли вы эти три шага? Если он по-прежнему не работает, можете ли вы показать какие-либо предупреждения, появляющиеся в процессе компиляции? - person Thomas Orozco; 12.09.2013
comment
@Bepetersn, ключевой шаг здесь - ./configure. Вы должны проверить его вывод для sqlite3. - person Thomas Orozco; 12.09.2013
comment
Когда я вручную выполнил python 2.7 на RHEL6, компилятор вылетал при попытке построить модуль sqlite3 из-за 64-битной ошибки и typedef. (Не уверен, где я нашел эту ссылку) Попробуйте снова скомпилировать python, внимательно посмотрите на вывод и посмотрите, почему (я думаю) модуль sqlite дает сбой во время компиляции. - person gregb212; 12.09.2013
comment
проверка наличия --enable-loadable-sqlite-extensions ... no: это единственная ссылка на sqlite из вывода ./configure. Я сейчас make installing. - person Brian Peterson; 12.09.2013
comment
@Bepetersn Для дальнейшего использования, configure - это шаг, на котором выполняется поиск доступных библиотек. Заголовочные файлы (содержащиеся в пакете -dev) - это файлы, которые сообщают компилятору, как выполнять сборку с двоичными файлами sqlite, которые есть в вашей системе. - person Thomas Orozco; 12.09.2013
comment
Большое спасибо за помощь. - person Brian Peterson; 12.09.2013
comment
Я использую raspberry pi с Raspbian (дистрибутив на основе debian), и у меня уже был установлен следующий пакет libsqlite3-0, но это не помогло, и python не построил библиотеку _sqlite3. Но после того, как я установил: libsqlite3-dev, это произошло. Я думал, это кому-нибудь поможет. - person gogaman; 17.02.2016
comment
Вам необходимо установить libsqlite3-dev на Ubuntu 16.04. - person Seunghoon; 12.04.2018

После apt-get install libsqlite3-dev

тогда

./configure --prefix=/opt/python3.7.4 --with-ssl --with-pydebug

make
make install

Примечание: вам может понадобиться apt-get install libssl-dev также, версия openssl должна быть выше 1.0.2, если вы компилируете python3.7.

Для меня я использую ubuntu 14.04 (надежный). Я не могу найти пакет libssl-dev, отвечающий требованиям компиляции python3.7 с поддержкой ssl. Я модифицирую свой /etc/apt/sourcelist.d

deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted
deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted

после установки более новой libssl-dev, затем измените ее обратно на исходную

deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted
person wukong    schedule 13.08.2019
comment
1. --with-ssl сейчас не требуется 2. libffi-dev также требуется, иначе будет ошибка Нет модуля с именем '_ctypes' при использовании значения из многопроцессорной обработки модуля, когда make install - person wukong; 28.10.2020

Если у вас есть только ограниченный пользовательский доступ (без прав root или sudo), вы можете установить в локальную, доступную пользователю среду, например:

tar -xvf sqlite-autoconf-3270200.tar.gz
cd sqlite-autoconf-3270200
./configure --prefix=$HOME/.local
make && make install

Это будет установлено на вашем ~/.local дереве.

Добавьте ~/.local/bin к своему пути, если он отсутствует.

person user1656671    schedule 01.04.2019