Немає модуля з іменем _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
Ця ж проблема стосується і складеного пітона 3.5.5 від джерела
Алекс-Богданов

Відповіді:


133

Здається, ваш файл makefile не містить відповідний .soфайл. Виправити цю проблему можна за допомогою наведених нижче кроків:

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

Примітка

sudo make installЧастина встановить , що пітон версія буде загальносистемний стандарт, який може мати непередбачені наслідки. Якщо ви запустите цю команду на своїй робочій станції, ви, ймовірно, захочете встановити її поряд із існуючим пітоном, що можна зробити sudo make altinstall.


Спасибі jammyWolf. Я не думаю, що я "втратив" файл після першого запуску налаштування, швидше, що запущена конфігурація з уже встановленим sqlite-devel зробила все це різницею.
Джефф Тейлор

4
Як я можу встановити sqlite-devel? Я на настроюється Linux system.I тільки що завантажили sqlite-autoconf-3100200.tar.gzі запустити ./configure, make && make install. Після перекомпіляції python3 він все ще не працює.
AntiMoron

2
Для всіх, хто читає це, обов’язково додайте у відповідь параметр налаштування. Саме це і мене врятувало. Інакше не має значення, що ви встановили libsqlite3-dev.
тикстер

3
як я можу перевірити, де знаходиться сценарій налаштування?
Дженна Квон

1
жодне з цих рішень (посилання: все на цій сторінці) не працює для Amazon linux з python
3.8.0

80

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


6
Саме так! Вам не доведеться вручну маніпулювати бінарними файлами та оточенням. У моєму випадку я вже будував Python 2.7 з джерела, тож для мінімізації компіляції я виконав apt-get install libsqlite3-dev; ./конфігурація; зробити libinstall; зробити спільнуустановку;
oxfn

38

У мене була така ж проблема з Python 3.5 на Ubuntu під час використання pyenv .

Якщо ви встановлюєте python за допомогою pyenv , він вказаний як одна із поширених проблем у складанні . Щоб вирішити це, видаліть встановлену версію python, встановіть вимоги (для цього конкретного випадку libsqlite3-dev), а потім перевстановіть версію python.


22

Це те, що я зробив, щоб змусити його працювати.

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

Я спершу зробив те, що сказав Зубаїр (вище) і виконав цю команду:

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. Перекомпілюйте пітон з джерела:

    ./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. Фрагмент коду від 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

Дякую! Точно така ж проблема для мене. Бібліотека вбудована, але не скопійована в потрібний каталог.
Студент222

8

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

  1. Знайдіть файл "_sqlite3.so"

    find / -name _sqlite3.so

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

  2. Знайдіть редактор бібліотеки python Standard, яку ви хочете використовувати,

    для мене /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

6

Це працювало для мене в Redhat Centos 6.5:

yum install sqlite-devel
pip install pysqlite

1
просто fyi Мені не потрібно було робити крок піп
HashRocketSyntax

6

мій python побудований з джерела, причина відсутня параметри, коли exec налаштовує версію python: 3.7.4

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

фіксований


3

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

- No module named _sqlite3 -

Це вирішується за допомогою порту стенд ----------

/usr/ports/databases/py-sqlite3

після цього можна побачити:

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

14
Ця відповідь має дуже мало сенсу. Чи можете ви переглянути його?
Тім Пост

У мене був такий самий випуск, FreeBSD 8.2 w / Py2.7.2. Вирішено просто запуском через make / install знову для py-sqlite3.
Джастін

Ви повинні зробити деінсталяцію, якщо вона здається встановленою спочатку. freebsd 10.2
Кунтар

2

Чи встановлено пакет python-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і встановив її знову.

Видаліть існуючий пітон:

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

ви повинні бути в центсі або редагувати і компілювати 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 встановити pysqlite3
  • pip встановити db-sqlite3

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

Рішення:

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

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


У мене була точна помилка. Це якось вирішило мою проблему. Дякую!
uqji

1

Я був розчарований, що це питання існує до сьогодні. Оскільки я нещодавно намагався встановити vCD CLI на CentOS 8.1, і мене з такою ж помилкою сприйняли при спробі його запуску. Спосіб, який я мав вирішити в моєму випадку, полягає в наступному:

  • Встановіть SQLite3 з нуля з відповідним префіксом
  • Очистіть мою установку Python
  • Запустіть Make install для перевстановлення Python

Оскільки я робив це, щоб створити інший блог про те, як встановити vCD CLI та розширення VMware Container Service. Я в кінцевому підсумку захопив кроки, які використовував для вирішення проблеми, і виклав її в окрему публікацію блогу за адресою:

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.