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

83

Я пытаюсь запустить приложение 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, или есть ли другой способ запустить этот модуль?

  • 0
    Та же проблема для скомпилированного Python 3.5.5 из исходного кода
Теги:
debian

20 ответов

70

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

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

Кажется, ваш 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.

  • 0
    Спасибо jammyWolf. Я не думаю, что я «потерял» файл после первого запуска configure, скорее, тот факт, что запуск configure с уже установленным sqlite-devel сделал все это различие.
  • 0
    Конфигурация спасла меня "./configure --enable-loadable-sqlite-extensions"
Показать ещё 8 комментариев
18

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

Я использую 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 вместо первой строки yum install sqlite-devel .
  • 2
    Это хорошо для Python 2, но pysqlite теперь sqlite3 в Python 3, и вы не можете pip -m install , что.
Показать ещё 1 комментарий
14

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

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

  • 0
    спасибо, сэкономил мне кучу времени на поиски
11
  • Установите пакет sqlite-devel:

    yum install sqlite-devel -y

  • Перекомпилируйте python из источника:

    ./configure
    make
    make altinstall
    
  • 0
    @natdempk Спасибо за исправление формата. :)
9

Мой _sqlite3.so находится в /usr/lib/python 2.5/lib-dynload/_sqlite3.so. Судя по вашим путям, у вас должен быть файл /usr/local/lib/python 2.5/lib-dynload/_sqlite3.so.

Попробуйте следующее:

find /usr/local -name _sqlite3.so

Если файл не найден, что-то может быть неправильным при установке Python. Если это так, убедитесь, что путь, который он установил, находится в пути Python. В оболочке Python

import sys
print sys.path

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

  • 0
    только что проверил. путь там, но _sqlite3.so действительно отсутствует. Любые предложения, могу ли я установить его отдельно или лучше переустановить python? Спасибо!
  • 2
    Похоже, вы создали и установили Python вручную (не слишком ли устарели пакеты в вашей ОС?), Поскольку он находится в / usr / local. Убедитесь, что пакет sqlite dev установлен (libsqlite3-dev в текущих дистрибутивах, возможно, не в вашем), иначе Python не сможет собрать модуль. Если вы установите его, вам нужно перестроить Python, чтобы он включал этот модуль.
Показать ещё 4 комментария
7

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

  • Настройка файла setup.py для включения правильного пути devl sqlite. Фрагмент кода из 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/'.

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

Voila! Поддержка SQLite3 теперь работает.

  • 0
    Спасибо! Только первая часть была необходима для Linux Mint Debian Edition, 2014
  • 0
    Спасибо! Точно такая же проблема для меня. Библиотека построена, но не скопирована в нужный каталог.
5

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

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

    find / -name _sqlite3.so
    

    out: /usr/lib64/python2.7/lib-dynload/_sqlite3.so

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

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

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

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

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

  • 0
    Спасибо ~~~~~
5

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

yum install sqlite-devel
pip install pysqlite
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
2

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

- No module named _sqlite3 -

Он разрешен стоять на порту ----------

/usr/ports/databases/py-sqlite3

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

OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'
  • 13
    Этот ответ имеет очень мало смысла. Можете ли вы пересмотреть это?
  • 0
    У меня была такая же проблема, FreeBSD 8.2 с Py2.7.2. Решено, просто запустив make / install снова для py-sqlite3.
Показать ещё 1 комментарий
1

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

0

Извините за оживление старой темы. Я пробовал все из этой темы, но у меня все та же проблема

Я, безусловно, что-то упустил. было бы здорово, если у вас есть идея, что я мог бы попробовать

Вот часть журнала:...... Файл "/usr/local/lib/python3.7/sqlite3/init.py", строка 23, из sqlite3.dbapi2 import * File "/usr/local/lib/python3.7/sqlite3/dbapi2.py ", строка 27, из _sqlite3 import * ModuleNotFoundError: нет модуля с именем '_sqlite3'

Заранее спасибо. Приветствия Джонс

0

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

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

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

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

0

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

просто удалите 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 установлен fireup терминал и писать

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

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

0

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

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

Установлен ли python-pysqlite2 пакет

sudo apt-get install python-pysqlite2
  • 1
    sqlite устанавливается вместе с Python; вам не нужно устанавливать отдельный пакет для него, и мы можем сказать, что у него уже есть библиотека, предоставленная Python. Установка python-sqlite в лучшем случае сбивает с толку.
  • 0
    Спазм мозга Я имел в виду пакет python-pysqlite2. Я не мог заставить Django / sqlite работать на lenny без этого пакета. Я обновил свой ответ.
Показать ещё 1 комментарий
-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), поэтому нет необходимости устанавливать его вручную. Я думаю, это верно и для большинства дистрибутивов.
-1

У меня также была эта проблема для django 1.9, python3.5 и ubuntu 14.04 Я только что добавил sudo перед каждой командой и решил свою проблему пример

sudo python manage.py migrate
sudo python manage.py runserver
-2

Вам нужно установить pysqlite в вашей среде python:

    $ pip install pysqlite
  • 0
    Это работает только для Python <= 2.4

Ещё вопросы

Сообщество Overcoder
Наверх
Меню