Нет модуля с именем _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
источник
Спасибо 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, а затем импорт сработал.

Emilien
источник
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 теперь работает.

foomip
источник
Спасибо! Только первая часть была необходима для 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

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

EHCO
источник
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
Ehsan88
источник
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
Bryan
источник
1
sqlite устанавливается вместе с Python; вам не нужно устанавливать отдельный пакет для него, и мы можем сказать, что у него уже есть библиотека, предоставленная Python. Установка python-sqlite в лучшем случае сбивает с толку.
Гленн Мейнард
Спазм мозга Я имел в виду пакет python-pysqlite2. Я не мог заставить Django / sqlite работать на lenny без этого пакета. Я обновил свой ответ.
Брайан
У меня установлен python-pysqlite2.
Александр ван Дейк
2

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

myselfhimself
источник
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
wolfkdy
источник
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 (для создания базы данных)

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

tosky
источник
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

Ikhurana
источник
У меня была точная ошибка. Это как-то решило мою проблему. Спасибо!
Укджи
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

Вам необходимо установить pysqlite в среду Python:

    $ pip install pysqlite
Дарвин М.
источник
-3

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

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

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

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

сен джон
источник