Tidak ada modul bernama _sqlite3

136

Saya mencoba menjalankan aplikasi Django di VPS saya yang menjalankan Debian 5. Ketika saya menjalankan aplikasi demo, ia kembali dengan kesalahan ini:

  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

Melihat instalasi Python, ia memberikan kesalahan yang sama:

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
>>>

Membaca di web, saya belajar bahwa Python 2.5 harus datang dengan semua pembungkus SQLite yang diperlukan . Apakah saya perlu menginstal ulang Python, atau adakah cara lain untuk menjalankan dan menjalankan modul ini?

Alexander van Dijk
sumber
1
Masalah yang sama adalah untuk mengkompilasi python 3.5.5 dari sumber
Alex-Bogdanov

Jawaban:

133

Tampaknya makefile Anda tidak menyertakan .sofile yang sesuai . Anda dapat memperbaiki masalah ini dengan langkah-langkah di bawah ini:

  1. Instal sqlite-devel(atau libsqlite3-devpada beberapa sistem berbasis Debian)
  2. Mengkonfigurasi ulang dan mengompilasi ulang Python dengan ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Catatan

Bagian sudo make installakan menetapkan bahwa versi python menjadi standar seluruh sistem, yang dapat memiliki konsekuensi yang tidak terduga. Jika Anda menjalankan perintah ini di workstation Anda, Anda mungkin ingin menginstalnya bersama python yang ada, yang dapat dilakukan dengan sudo make altinstall.

jammyWolf
sumber
Terima kasih jammyWolf. Saya tidak berpikir bahwa saya "kehilangan" file setelah pertama kali saya menjalankan konfigurasi, melainkan menjalankan konfigurasi dengan sqlite-devel yang sudah diinstal membuat semua perbedaan ini.
Jeff Taylor
4
Bagaimana saya bisa menginstal sqlite-devel? Saya pada disesuaikan linux system.I hanya download sqlite-autoconf-3100200.tar.gzdan menjalankan ./configure, make && make install. Setelah saya mengkompilasi ulang python3 itu masih tidak berfungsi.
AntiMoron
2
Bagi siapa pun yang membaca ini, pastikan untuk menambahkan opsi konfigurasi dalam jawaban. Itu yang menyelamatkan saya juga. Jika tidak, Anda tidak perlu menginstal libsqlite3-dev.
ticster
3
bagaimana cara memeriksa di mana skrip konfigurasi?
Jenna Kwon
1
tidak satupun dari solusi ini (ref: all on this page) berfungsi untuk amazon linux dengan python 3.8.0
bgenchel
80

Saya memiliki masalah yang sama (membangun python2.5dari sumber di Ubuntu Lucid), dan import sqlite3melemparkan pengecualian yang sama ini. Saya telah menginstal libsqlite3-devdari manajer paket, mengkompilasi ulang python2.5, dan kemudian impor bekerja.

Emilien
sumber
6
Persis! Anda tidak perlu memanipulasi secara manual dengan file dan lingkungan biner. Dalam kasus saya, saya sudah membangun Python 2.7 dari source, jadi, untuk memperkecil kompilasi saya telah menjalankan apt-get install libsqlite3-dev; ./configure; buat libinstall; buat sharedinstall;
oxfn
38

Saya memiliki masalah yang sama dengan Python 3.5 di Ubuntu saat menggunakan pyenv .

Jika Anda menginstal python menggunakan pyenv , itu terdaftar sebagai salah satu masalah build yang umum . Untuk mengatasinya, hapus versi python yang diinstal, instal persyaratan (untuk kasus khusus ini libsqlite3-dev), lalu instal ulang versi python.

Mesin Virtual Kecil
sumber
22

Inilah yang saya lakukan untuk membuatnya bekerja.

Saya menggunakan pythonbrew (yang menggunakan pip) dengan python 2.7.5 diinstal.

Saya pertama kali melakukan apa yang Zubair (atas) katakan dan menjalankan perintah ini:

sudo apt-get install libsqlite3-dev

Lalu saya menjalankan perintah ini:

pip install pysqlite

Ini memperbaiki masalah database dan saya mendapat konfirmasi tentang ini ketika saya menjalankan:

python manager.py syncdb
Joe
sumber
2
di Centos 6.5 jalankan yum install sqlite-develbukan baris pertama.
Ehsan88
3
Itu bagus untuk Python 2, tetapi pysqlitesekarang sqlite3dalam Python 3, dan Anda tidak bisa melakukannya pip -m install.
clabe45
5
pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library
stephen
19
  1. Instal sqlite-develpaket:

    yum install sqlite-devel -y

  2. Kompilasi ulang python dari sumber:

    ./configure
    make
    make altinstall
John Zhang
sumber
10

_Sqlite3.so saya ada di /usr/lib/python2.5/lib-dynload/_sqlite3.so. Menilai dari jalur Anda, Anda harus memiliki file /usr/local/lib/python2.5/lib-dynload/_sqlite3.so.

Coba yang berikut ini:

find /usr/local -name _sqlite3.so

Jika file tidak ditemukan, ada sesuatu yang salah dengan instalasi Python Anda. Jika ya, pastikan jalur yang dipasangnya berada di jalur Python. Dalam shell Python,

import sys
print sys.path

Dalam kasus saya, /usr/lib/python2.5/lib-dynload ada dalam daftar, jadi ia dapat menemukan /usr/lib/python2.5/lib-dynload/_sqlite3.so.

Glenn Maynard
sumber
2
baru diperiksa. jalan ada di sana, tetapi _sqlite3.so memang hilang. Ada saran apakah saya dapat menginstalnya secara terpisah atau lebih baik untuk menginstal ulang python? Terima kasih!
Alexander van Dijk
2
Sepertinya Anda membuat dan menginstal Python secara manual (apakah paket di OS Anda terlalu lama?), Karena ini di / usr / local. Pastikan bahwa paket dev sqlite diinstal (libsqlite3-dev di distro saat ini, mungkin tidak di milik Anda), atau Python tidak akan dapat membangun modul. Jika Anda menginstalnya, Anda harus membangun kembali Python sehingga termasuk modul itu.
Glenn Maynard
Hmm, saya menginstal libsqlite3-dev dan membangun kembali python, tapi sekarang saya mendapatkan kesalahan lagi: ImportError: ./_sqlite3.so: simbol tidak terdefinisi: PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk
Saya bingung. Distro Anda sudah memiliki Python 2.5 ( packages.debian.org/lenny/python2.5 ). Mengapa Anda membangunnya sendiri?
Glenn Maynard
1
Tapi Anda menjalankan Python dari / usr / local. Sepertinya Anda menginstal Python dua kali - sekali sendiri dan sekali dengan apt-get, dan yang ada di / usr / local rusak.
Glenn Maynard
8

Saya baru-baru ini mencoba menginstal python 2.6.7 pada desktop Ubuntu 11.04 saya untuk beberapa pekerjaan dev. Datang di masalah yang sama dengan utas ini. Saya telah memperbaikinya dengan:

  1. Menyesuaikan file setup.py untuk menyertakan jalur dev sqlite yang benar. Cuplikan kode dari 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/'
    ]

    Dengan bit yang saya tambahkan adalah '/ usr / lib / x86_64-linux-gnu /'.

  2. Setelah menjalankan make, saya tidak mendapatkan peringatan yang mengatakan bahwa dukungan sqlite tidak dibangun (yaitu, ia dibangun dengan benar: P), tetapi setelah dijalankan make install, sqlite3 masih tidak mengimpor dengan " ImportError: No module named _sqlite3" whe running "import sqlite3" yang sama .

    Jadi, perpustakaan sudah dikompilasi, tetapi tidak dipindahkan ke jalur instalasi yang benar, jadi saya menyalin .sofile ( 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/- ini adalah jalur build saya, Anda mungkin perlu menyesuaikannya dengan pengaturan Anda).

Voila! Dukungan SQLite3 sekarang berfungsi.

Foomip
sumber
Terima kasih! Bagian pertama diperlukan untuk Linux Mint Debian Edition, 2014
spookylukey
Terima kasih! Masalah yang sama persis bagi saya. Perpustakaan dibangun tetapi tidak disalin ke direktori yang benar.
Siswa222
8

Saya menemukan banyak orang menemui masalah ini karena Multi-versi Python, pada vps saya sendiri (cent os 7 x64), saya menyelesaikannya dengan cara ini:

  1. Temukan file "_sqlite3.so"

    find / -name _sqlite3.so

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

  2. Temukan dir dari python Standard library yang ingin Anda gunakan,

    untuk saya /usr/local/lib/python3.6/lib-dynload

  3. Salin file:

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

Akhirnya, semuanya akan beres.

Ehco
sumber
6
Tidak bekerja untuk saya. Punya ImportError: dynamic module does not define module export function (PyInit__sqlite3)pada CentOS 7.
xtluo
sama dengan saya, apakah py2 .sotidak bisa digunakan untuk py3.6.4? @xtluo
MeadowMuffins
Saya mendapatkan kesalahan ini sebagai gantinya -ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
bgenchel
6

Ini bekerja untuk saya di Redhat Centos 6.5:

yum install sqlite-devel
pip install pysqlite
Ehsan88
sumber
1
hanya fyi saya tidak perlu melakukan pip langkah
HashRocketSyntax
6

python saya adalah membangun dari sumber, penyebabnya adalah opsi yang hilang ketika exec mengkonfigurasi versi python : 3.7.4

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

tetap

Robin
sumber
3

Saya memiliki masalah di FreeBSD 8.1:

- No module named _sqlite3 -

Itu diselesaikan dengan berdiri port ----------

/usr/ports/databases/py-sqlite3

setelah ini dapat melihat:

OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'
George
sumber
14
Jawaban ini sangat tidak masuk akal. Bisakah Anda merevisinya?
Tim Post
Saya memiliki masalah yang sama, FreeBSD 8.2 w / Py2.7.2. Diselesaikan dengan hanya menjalankan make / install lagi, untuk py-sqlite3.
Justin
Anda harus menghapus instalasi jika tampaknya diinstal terlebih dahulu. freebsd 10.2
Kunthar
2

Apakah paket python-pysqlite2 diinstal?

sudo apt-get install python-pysqlite2
Bryan
sumber
1
sqlite diinstal dengan Python; Anda tidak perlu menginstal paket terpisah untuk itu, dan kami dapat mengatakan bahwa ia sudah memiliki pustaka yang disediakan oleh Python. Menginstal python-sqlite paling membingungkan.
Glenn Maynard
Kram otak. Saya maksudkan paket python-pysqlite2. Saya tidak bisa membuat Django / sqlite bekerja di lenny tanpa paket ini. Saya telah memperbarui jawaban saya.
bryan
Saya telah menginstal python-pysqlite2.
Alexander van Dijk
2

Memeriksa file settings.py Anda. Apakah Anda tidak hanya menulis "sqlite" alih-alih "sqlite3" untuk mesin database?

diriku sendiri
sumber
2

sqlite3dikirimkan dengan Python. Saya juga memiliki masalah yang sama, saya hanya menghapus python3.6dan menginstalnya lagi.

Copot python yang ada:

sudo apt-get remove --purge python3.6

Instal 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
Mastan Basha Shaik
sumber
1

Anda harus dalam centos atau redhat dan kompilasi sendiri python, itu adalah bug python lakukan ini dalam kode sumber python Anda dan lakukan ini di bawah

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

Saya mendapat masalah yang sama, tidak ada yang berhasil bagi saya dari ans di atas, tetapi sekarang saya memperbaikinya

hanya menghapus python.pipdan sqlite3dan instal ulang

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

sekarang instal lagi

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

dalam kasus saya saat menginstal sqlite3lagi itu menunjukkan beberapa kesalahan lalu saya mengetik

  1. sqlite3

di terminal untuk memeriksa apakah telah dihapus atau tidak dan mulai membongkar

setelah sqlite3terminal kebakaran diinstal dan menulis

  1. sqlite3
  2. database.db (untuk membuat database)

Saya yakin ini pasti akan membantu Anda

tosky
sumber
1

Menempatkan jawaban bagi siapa saja yang mendarat di halaman ini mencari solusi untuk OS Windows:

Anda harus menginstal pysqlite3 atau db-sqlite3 jika belum diinstal. Anda dapat menggunakan berikut ini untuk menginstal.

  • pip instal pysqlite3
  • pip instal db-sqlite3

Bagi saya masalahnya adalah dengan file DLL dari sqlite3.

Larutan:

  1. Saya mengambil file DLL dari situs sqlite . Ini mungkin bervariasi berdasarkan versi instalasi python Anda.

  2. Saya menempelkannya di direktori DLL dari env. bagi saya itu adalah "C: \ Anaconda \ Lib \ DLLs", tetapi periksa milik Anda. Sebelum dan Setelah menempatkan file DLL

Ikhurana
sumber
Saya memiliki kesalahan yang tepat. Ini entah bagaimana menyelesaikan masalah saya. Terima kasih!
uqji
1

Saya kecewa masalah ini masih ada sampai hari ini. Karena saya baru-baru ini mencoba untuk menginstal vCD CLI pada CentOS 8.1 dan saya disambut dengan kesalahan yang sama ketika mencoba menjalankannya. Cara saya harus menyelesaikannya dalam kasus saya adalah sebagai berikut:

  • Instal SQLite3 dari awal dengan awalan yang tepat
  • Bersihkan Instalasi Python saya
  • Jalankan Lakukan instal untuk menginstal ulang Python

Seperti yang telah saya lakukan ini untuk membuat posting blog yang berbeda tentang cara menginstal vCD CLI dan VMware Container Service Extension. Saya akhirnya menangkap langkah-langkah yang saya gunakan untuk memperbaiki masalah dan meletakkannya di posting blog terpisah di:

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

Saya harap ini membantu, karena sementara tips di atas telah membantu saya mendapatkan solusi, saya harus menggabungkan beberapa dari mereka dan sedikit memodifikasinya.

Eiad Al-Aqqad
sumber
Terima kasih telah mengungkapkan afiliasi Anda dengan tautan yang Anda sediakan! Itu dihargai.
Robert Columbia
-1

Unduh sqlite3:

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

Ikuti langkah-langkah ini untuk menginstal:

$tar xvfz sqlite-autoconf-3071502.tar.gz
$cd sqlite-autoconf-3071502
$./configure --prefix=/usr/local
$make install
Narendra Kumar
sumber
1
Pertanyaan ini ditanyakan pada tahun 2009 dan tentang Debian 5. sqlite3 sekarang tersedia di repo (karena Wheezy) sehingga tidak perlu menginstalnya secara manual. Saya kira ini berlaku untuk sebagian besar distro juga.
Jérôme
-3

Anda perlu menginstal pysqlite di lingkungan python Anda:

    $ pip install pysqlite
Darwin M.
sumber
-3

Coba salin _sqlite3.soagar Python dapat menemukannya.

Itu harus sesederhana:

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

Percayalah padaku, cobalah.

sen john
sumber