Нет модуля с именем _sqlite3


136

Я пытаюсь запустить приложение Django на своем VPS под управлением Debian 5. Когда я запускаю демонстрационное приложение, оно возвращается с такой ошибкой:

  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, in <module>
    raise 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 "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3
>>>

Читая в Интернете, я узнал, что Python 2.5 должен иметь все необходимые оболочки SQLite . Нужно ли мне переустанавливать Python или есть другой способ запустить и запустить этот модуль?


1
Такая же проблема для скомпилированного python 3.5.5 из исходников
— Alex-Bogdanov

Ответы:


134

Кажется, ваш make-файл не включал соответствующий .soфайл. Вы можете исправить эту проблему, выполнив следующие действия:

  1. Установить sqlite-devel(или libsqlite3-devв некоторых системах на основе Debian)
  2. Переконфигурируйте и перекомпилируйте Python с помощью ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Заметка

Эта sudo make installчасть установит эту версию Python в качестве общесистемного стандарта, что может иметь непредвиденные последствия. Если вы запустите эту команду на своей рабочей станции, вы, вероятно, захотите установить ее вместе с существующим питоном, что можно сделать с помощью sudo make altinstall.


Спасибо jammyWolf. Я не думаю, что я «потерял» файл после первого запуска configure, скорее, запуск configure с уже установленным sqlite-devel изменил всю эту разницу.
— Джефф Тейлор

4
Как я могу установить sqlite-devel? Я на настраиваемой Linux system.I только что скачали sqlite-autoconf-3100200.tar.gzи запустить ./configure, make && make install. После перекомпиляции python3 он все еще не работает.
— AntiMoron

2
Для всех, кто читает это, обязательно добавьте в ответ параметр настройки. Это меня тоже спасло. В противном случае не имеет значения, что вы установили libsqlite3-dev.
— ticster

3
как мне проверить, где находится сценарий настройки?
— Дженна Квон

1
ни одно из этих решений (см. все на этой странице) не работает для amazon linux с python 3.8.0
— bgenchel

80

У меня была такая же проблема (сборка python2.5из исходного кода на Ubuntu Lucid), и я import sqlite3выбросил то же исключение. Я установил libsqlite3-devиз диспетчера пакетов, перекомпилировал python2.5, а затем импорт сработал.


6
Именно! Вам не нужно вручную манипулировать бинарными файлами и окружением. В моем случае у меня уже был Python 2.7, собранный из исходного кода, поэтому для минимизации компиляции я выполнил apt-get install libsqlite3-dev; ./configure; сделать libinstall; сделать sharedinstall;
— августа

38

У меня была та же проблема с Python 3.5 на Ubuntu при использовании pyenv .

Если вы устанавливаете python с использованием pyenv , он указан как одна из распространенных проблем сборки . Чтобы решить эту проблему, удалите установленную версию Python, установите требования (для данного конкретного случая libsqlite3-dev), а затем переустановите версию Python.


22

Это то, что я сделал, чтобы заставить его работать.

Я использую pythonbrew (который использует pip) с установленным python 2.7.5.

Сначала я сделал то, что сказал Zubair (выше), и выполнил эту команду:

sudo apt-get install libsqlite3-dev

Затем я запустил эту команду:

pip install pysqlite

Это решило проблему с базой данных, и я получил подтверждение этого, когда запустил:

python manager.py syncdb

2
в Centos 6.5 запустить yum install sqlite-develвместо первой строки.
— Ehsan88

3
Это хорошо для Python 2, но pysqliteтеперь sqlite3в Python 3, и вы не можете pip -m installэтого сделать.
— clabe45

5
pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library
— Стивен

19
  1. Установите sqlite-develпакет:

    yum install sqlite-devel -y

  2. Перекомпилируйте python из исходного кода:

    ./configure
    make
    make altinstall

10

Мой _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

import sys
print sys.path

В моем случае /usr/lib/python2.5/lib-dynload находится в списке, поэтому он может найти /usr/lib/python2.5/lib-dynload/_sqlite3.so.


2
только что проверил. путь там, но _sqlite3.so действительно отсутствует. Любые предложения, могу ли я установить его отдельно или лучше переустановить python? Спасибо!
— Александр ван Дейк

2
Похоже, вы создали и установили Python вручную (пакеты в вашей ОС слишком старые?), Поскольку он находится в / usr / local. Убедитесь, что пакет sqlite dev установлен (libsqlite3-dev в текущих дистрибутивах, возможно, не в вашем), иначе Python не сможет собрать модуль. Если вы установите его, вам нужно перестроить Python, чтобы он включал этот модуль.
— Гленн Мейнард

Хм, я установил libsqlite3-dev и перестроил python, но теперь я получаю еще одну ошибку: ImportError: ./_sqlite3.so: неопределенный символ: PyUnicodeUCS4_DecodeUTF8
— Александр ван Дейк

Я запутался. В вашем дистрибутиве уже есть Python 2.5 ( packages.debian.org/lenny/python2.5 ). Почему вы строите это сами?
— Гленн Мейнард

1
Но вы используете Python из / usr / local. Похоже, вы установили Python дважды - один раз самостоятельно и один раз с помощью apt-get, а тот, что находится в / usr / local, не работает.
— Гленн Мейнард

8

Недавно я попытался установить python 2.6.7 на свой рабочий стол Ubuntu 11.04 для некоторых разработок. Наткнулся на похожие проблемы в этой теме. Я сделал это, чтобы исправить это:

  1. Корректировка файла 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 /'

  2. После запуска make я не получил никаких предупреждений о том, что поддержка sqlite не была собрана (т. Е. Правильно скомпонована: P), но после запуска make installsqlite3 все равно не импортировал с тем же " 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 теперь работает.


Спасибо! Только первая часть была необходима для Linux Mint Debian Edition, 2014
— spookylukey

Спасибо! Точно такая же проблема для меня. Библиотека построена, но не скопирована в нужный каталог.
— Student222

8

Я обнаружил, что многие люди сталкиваются с этой проблемой, потому что Multi-версия Python, на моем собственном vps (cent OS 7 x64), я решил ее следующим образом:

  1. Найдите файл "_sqlite3.so"

    find / -name _sqlite3.so

    вне: /usr/lib64/python2.7/lib-dynload/_sqlite3.so

  2. Найдите каталог стандартной библиотеки Python, который вы хотите использовать,

    для меня /usr/local/lib/python3.6/lib-dynload

  3. Скопируйте файл:

    cp   /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload

Наконец-то все будет хорошо.


6
Не работал для меня Получил ImportError: dynamic module does not define module export function (PyInit__sqlite3)CentOS 7.
— xtluo

для меня то же самое, что py2 .soнельзя использовать для py3.6.4? @xtluo
— MeadowMuffins

Я получил эту ошибку вместо -ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
— Bgenchel

7

мой питон собран из исходного кода, причина в том, что в exec configure python version: 3.7.4 отсутствуют параметры

./configure --enable-loadable-sqlite-extensions --enable-optimizations
make
make install

фиксированный


6

Это сработало для меня в Redhat Centos 6.5:

yum install sqlite-devel
pip install pysqlite

1
мне просто не нужно было делать шаг
— пипса

3

У меня проблема во FreeBSD 8.1:

- No module named _sqlite3 -

Это решается стойкой порта ----------

/usr/ports/databases/py-sqlite3

после этого можно увидеть:

OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'

14
Этот ответ имеет очень мало смысла. Можете ли вы пересмотреть это?
— Тим Пост

У меня была та же проблема, FreeBSD 8.2 с Py2.7.2. Решено, просто запустив make / install снова для py-sqlite3.
— Джастин

Вы должны сделать деинсталляцию, если она кажется установленной сначала. freebsd 10.2
— Kunthar

2

Является ли питон-pysqlite2 установлен пакет?

sudo apt-get install python-pysqlite2

1
sqlite устанавливается вместе с Python; вам не нужно устанавливать отдельный пакет для него, и мы можем сказать, что у него уже есть библиотека, предоставленная Python. Установка python-sqlite в лучшем случае сбивает с толку.
— Гленн Мейнард

Спазм мозга Я имел в виду пакет python-pysqlite2. Я не мог заставить Django / sqlite работать на lenny без этого пакета. Я обновил свой ответ.
— Брайан

У меня установлен python-pysqlite2.
— Александр ван Дейк

2

Проверка вашего файла settings.py. Вы не просто написали «sqlite» вместо «sqlite3» для ядра базы данных?


2

sqlite3поставляется с Python. У меня тоже была такая же проблема, я просто удалил python3.6и установил снова.

Удалить существующий Python:

sudo apt-get remove --purge python3.6

Установите python3.6:

sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
sudo make altinstall

1

вы должны быть в centos или redhat и скомпилировать python самостоятельно , это ошибка python, сделайте это в dir исходного кода python и сделайте это ниже

curl -sk https://gist.github.com/msabramo/2727063/raw/59ea097a1f4c6f114c32f7743308a061698b17fd/gistfile1.diff | patch -p1

1

У меня та же проблема, у меня ничего не работало из вышеупомянутого ответа, но теперь я исправил ее

просто удалите python.pipи sqlite3и переустановка

  1. sudo apt-get remove python.pip
  2. sudo apt-get remove sqlite3

теперь установите его снова

  1. sudo apt-get install python.pip
  2. sudo apt-get install sqlite3

в моем случае при sqlite3повторной установке возникла ошибка, после чего я набрал

  1. sqlite3

на терминале, чтобы проверить, был ли он удален или нет, и он начал его распаковывать

как только sqlite3будет установлен терминал запуска и напишите

  1. sqlite3
  2. database.db (для создания базы данных)

Я уверен, это обязательно тебе поможет


1

Ответ для всех, кто попадает на эту страницу в поисках решения для ОС Windows:

Вам необходимо установить pysqlite3 или db-sqlite3, если они еще не установлены. вы можете использовать следующее для установки.

  • pip install pysqlite3
  • pip install db-sqlite3

Для меня проблема была в DLL-файле sqlite3.

Решение:

  1. Я взял DLL файл с сайта sqlite . Это может варьироваться в зависимости от вашей версии установки python.

  2. Я вставил его в каталог DLL файла env. для меня это был "C: \ Anaconda \ Lib \ DLLs", но проверьте свой. До и после размещения файла DLL


У меня была точная ошибка. Это как-то решило мою проблему. Спасибо!
— Укджи

1

Я был разочарован, что эта проблема существует до сих пор. Поскольку я недавно пытался установить vCD CLI на CentOS 8.1, меня приветствовали с той же ошибкой при попытке запустить его. В моем случае мне пришлось решить эту проблему следующим образом:

  • Установите SQLite3 с нуля с правильным префиксом
  • Очистить мою установку Python
  • Запустите Make install, чтобы переустановить Python

Поскольку я делал это для создания другого сообщения в блоге о том, как установить vCD CLI и VMware Container Service Extension. В итоге я записал шаги, которые использовал для решения проблемы, и поместил их в отдельную запись в блоге по адресу:

http://www.virtualizationteam.com/cloud/running-vcd-cli-fail-with-the-following-error-modulenotfounderror-no-module-named-_sqlite3.html

Я надеюсь, что это было полезно, поскольку, хотя приведенные выше советы помогли мне найти решение, мне пришлось объединить несколько из них и немного изменить.


Спасибо, что раскрыли свою принадлежность по предоставленной вами ссылке! Это ценится.
— Роберт Колумбия

-1

Скачать sqlite3:

wget http://www.sqlite.org/2016/sqlite-autoconf-3150000.tar.gz

Для установки выполните следующие действия:

$tar xvfz sqlite-autoconf-3071502.tar.gz
$cd sqlite-autoconf-3071502
$./configure --prefix=/usr/local
$make install

1
Этот вопрос был задан в 2009 году и касался Debian 5. sqlite3 теперь доступен в репозиториях (начиная с Wheezy), поэтому нет необходимости устанавливать его вручную. Думаю, это верно и для большинства дистрибутивов.
— Jérôme


-3

Попробуйте скопировать _sqlite3.so чтобы Python смог его найти.

Это должно быть так просто, как:

cp /usr/lib64/python2.6/lib-dynload/_sqlite3.so /usr/local/lib/python2.7/

Поверь мне, попробуй это.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.