_Sqlite3 adlı modül yok


136

Ben çalıştırmak çalışıyorum Django benim Uygulamayı VPS çalışan Debian Bir demo uygulaması çalıştırdığınızda 5., bu hata ile geri gelir:

  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 kurulumuna bakıldığında aynı hatayı verir:

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

Web'de okurken Python 2.5'in gerekli tüm SQLite sarmalayıcılarıyla birlikte gelmesi gerektiğini öğrendim . Python'u yeniden yüklemem gerekiyor mu yoksa bu modülü kurup çalıştırmanın başka bir yolu var mı?


1
Aynı sorun kaynaktan derlenmiş python 3.5.5 için de geçerlidir
Alex-Bogdanov

Yanıtlar:


134

Makefile .sodosyanızın uygun dosyayı içermediği anlaşılıyor . Bu sorunu aşağıdaki adımlarla düzeltebilirsiniz:

  1. Kurun sqlite-devel(veya libsqlite3-devbazı Debian tabanlı sistemlere)
  2. Python'u yeniden yapılandırın ve yeniden derleyin ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Not

sudo make installBölüm öngörülemeyen sonuçlar doğurabilir sistem genelinde standart olmak python'un versiyonunu ayarlayacaktır. Bu komutu iş istasyonunuzda çalıştırırsanız, muhtemelen mevcut python ile birlikte kurulmasını isteyeceksiniz sudo make altinstall.


Teşekkürler jammyWolf. Konfigürasyonu ilk çalıştırdığımda dosyayı "kaybettiğimi" düşünmüyorum, daha ziyade sqlite-devel zaten kurulu olan configure betiğini çalıştırmanın tüm bu farkı yarattığını düşünüyorum.
Jeff Taylor

4
Nasıl kurabilirim sqlite-devel? Sadece indirilen özelleştirilmiş linux system.I çıkıyorum sqlite-autoconf-3100200.tar.gzve çalıştırma ./configure, make && make install. Python3'ü yeniden derledikten sonra hala çalışmıyor.
AntiMoron

2
Bunu okuyan herkes için yanıta yapılandırma seçeneğini eklediğinizden emin olun. Bu beni de kurtardı. Aksi takdirde, libsqlite3-dev'i kurmuş olmanız önemli olmayacaktır.
ticster

3
configure betiğinin nerede olduğunu nasıl kontrol ederim?
Jenna Kwon

1
bu çözümlerin hiçbiri (ref: bu sayfadaki tümü) python 3.8.0 ile amazon linux için çalışmıyor
bgenchel

80

Aynı sorunu yaşadım ( python2.5Ubuntu Lucid'de kaynaktan derleme) ve import sqlite3aynı istisnayı attım. libsqlite3-devPaket yöneticisinden yükledim , python2.5'i yeniden derledim ve sonra içe aktarma çalıştı.


6
Kesinlikle! İkili dosyalar ve ortam ile manuel olarak işlem yapmanız gerekmez. Benim durumumda Python 2.7 zaten kaynaktan oluşturulmuştu, bu yüzden derlemeyi küçültmek için apt-get install libsqlite3-dev'i çalıştırdım; ./yapılandır; libinstall yapmak; paylaşılan kurulum yapmak;
oxfn


22

Çalışması için yaptığım şey buydu.

Python 2.7.5 kurulu olan pythonbrew (pip kullanan) kullanıyorum.

Önce Zubair'in (yukarıda) dediğini yaptım ve şu komutu çalıştırdım:

sudo apt-get install libsqlite3-dev

Sonra şu komutu çalıştırdım:

pip install pysqlite

Bu, veritabanı sorununu çözdü ve çalıştırdığımda bununla ilgili onay aldım:

python manager.py syncdb

2
Centos 6.5'te yum install sqlite-develilk hat yerine koş .
Ehsan88

3
Bu Python 2 için iyidir, ancak pysqliteşimdi sqlite3Python 3'te ve bunu yapamazsınız 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. sqlite-develPaketi yükleyin :

    yum install sqlite-devel -y

  2. Python'u kaynaktan yeniden derleyin:

    ./configure
    make
    make altinstall

10

_Sqlite3.so dosyam /usr/lib/python2.5/lib-dynload/_sqlite3.so içinde. Yollarınıza bakılırsa, /usr/local/lib/python2.5/lib-dynload/_sqlite3.so dosyasına sahip olmalısınız.

Takip etmeyi dene:

find /usr/local -name _sqlite3.so

Dosya bulunamazsa, Python kurulumunuzda bir sorun olabilir. Öyleyse, kurulduğu yolun Python yolunda olduğundan emin olun. Python kabuğunda,

import sys
print sys.path

Benim durumumda, /usr/lib/python2.5/lib-dynload listede olduğu için /usr/lib/python2.5/lib-dynload/_sqlite3.so'yu bulabilir.


2
yeni kontrol edildi. yol oradadır, ancak _sqlite3.so gerçekten eksiktir. Ayrı ayrı kurabileceğim veya python'u yeniden yükleyebileceğim konusunda herhangi bir öneriniz var mı? Teşekkürler!
Alexander van Dijk

2
Görünüşe göre Python'u manuel olarak oluşturmuş ve kurmuşsunuz (işletim sisteminizdeki paketler çok mu eski?), Çünkü / usr / local. Sqlite dev paketinin kurulu olduğundan emin olun (mevcut dağıtımlarda libsqlite3-dev, belki sizinkinde değil), aksi takdirde Python modülü oluşturamaz. Eğer kurarsanız, Python'u bu modülü içerecek şekilde yeniden oluşturmanız gerekir.
Glenn Maynard

Hmm, libsqlite3-dev yükledim ve python'u yeniden oluşturdum, ancak şimdi başka bir hata alıyorum: ImportError: ./_sqlite3.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk

Kafam karıştı. Dağıtımınızda Python 2.5 zaten var ( packages.debian.org/lenny/python2.5 ). Neden kendin inşa ediyorsun?
Glenn Maynard

1
Ama Python'u / usr / local dışında çalıştırıyorsunuz. Görünüşe göre Python'u iki kez kurmuşsunuz - bir kez kendiniz ve bir kez apt-get ile ve / usr / local içindeki biri bozulmuş.
Glenn Maynard

8

Yakın zamanda bazı geliştirme çalışmaları için Ubuntu 11.04 masaüstüme python 2.6.7 yüklemeyi denedim. Bu konuya benzer problemlerle karşılaştı. Düzeltmek için mamageldim:

  1. Setup.py dosyasını doğru sqlite geliştirme yolunu içerecek şekilde ayarlama. Setup.py'deki kod pasajı:

    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/'
    ]

    Eklediğim bit ile '/ usr / lib / x86_64-linux-gnu /'.

  2. Make'i çalıştırdıktan sonra sqlite desteğinin inşa edilmediğine dair herhangi bir uyarı almadım (yani doğru inşa edildi: P), ancak çalıştırdıktan sonra make installsqlite3 hala aynı " ImportError: No module named _sqlite3" whe running "import sqlite3" ile içe aktarılmadı .

    Bu yüzden, kitaplık derlendi, ancak doğru yükleme yoluna taşınmadı, bu yüzden .sodosyayı kopyaladım ( 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/- bunlar benim oluşturma yollarım, muhtemelen bunları kurulumunuza ayarlamanız gerekecek).

İşte bu kadar! SQLite3 desteği artık çalışıyor.


Teşekkür ederim! Linux Mint Debian Edition, 2014 için yalnızca ilk bölüm gerekliydi
spookylukey

Teşekkür ederim! Benim için tamamen aynı sorun. Kitaplık oluşturuldu ancak doğru dizine kopyalanmadı.
Öğrenci222

8

Birçok insanın bu sorunu karşıladığını buldum çünkü Çoklu sürüm Python, kendi vps'imde (cent os 7 x64), şu şekilde çözdüm:

  1. "_Sqlite3.so" dosyasını bulun

    find / -name _sqlite3.so

    dışarı: /usr/lib64/python2.7/lib-dynload/_sqlite3.so

  2. Kullanmak istediğiniz python Standard kitaplığının dizinini bulun,

    benim için /usr/local/lib/python3.6/lib-dynload

  3. Dosyayı kopyalayın:

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

Sonunda her şey yoluna girecek.


6
Benim için çalışmadı. Got ImportError: dynamic module does not define module export function (PyInit__sqlite3)CentOS 7.
xtluo

benim için aynı, py2 py3.6.4 .soiçin kullanılamaz mı? @xtluo
MeadowMuffins

Bunun yerine bu hatayı aldım -ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
bgenchel

7

python'um kaynaktan derlendi, nedeni exec python sürümünü yapılandırırken seçenekler eksik 3.7.4

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

sabit


6

Bu benim için Redhat Centos 6.5'te çalıştı:

yum install sqlite-devel
pip install pysqlite

1
sadece
fyi

3

FreeBSD 8.1'de sorun yaşıyorum:

- No module named _sqlite3 -

Bağlantı noktası standında çözüldü ----------

/usr/ports/databases/py-sqlite3

bundan sonra görebilir:

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

14
Bu cevap çok az mantıklı. Revize edebilir misin?
Tim Post

Aynı sorunu yaşadım, FreeBSD 8.2 w / Py2.7.2. Py-sqlite3 için sadece make / install komutunun tekrar çalıştırılmasıyla çözüldü.
Justin

ilk başta kurulu gibi görünüyorsa kaldırmanız gerekir. freebsd 10.2
Kunthar

2

Is piton-pySqlite2 paketi yüklü?

sudo apt-get install python-pysqlite2

1
sqlite Python ile kurulur; bunun için ayrı bir paket kurmanıza gerek yok ve Python tarafından sağlanan kitaplığa zaten sahip olduğunu söyleyebiliriz. Python-sqlite'ı kurmak en iyi ihtimalle kafa karıştırıcı olacaktır.
Glenn Maynard

Beyin krampı. Python-pysqlite2 paketini kastetmiştim. Bu paket olmadan Django / sqlite'ın lenny üzerinde çalışmasını sağlayamadım. Cevabımı güncelledim.
bryan

Python-pysqlite2 yüklüyüm.
Alexander van Dijk

2

Settings.py dosyanız kontrol ediliyor. Veritabanı motoru için "sqlite3" yerine "sqlite" yazmadınız mı?


2

sqlite3Python ile birlikte gelir. Ben de aynı sorunu yaşadım, yeni kaldırdım python3.6ve tekrar kurdum.

Mevcut python'u kaldırın:

sudo apt-get remove --purge python3.6

Python3.6'yı yükleyin:

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 veya redhat'te olmalısınız ve python'u kendiniz derlemelisiniz , bu python'un hatasıdır bunu python kaynak kodu dizininde yapın ve bunu aşağıda yapın

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

1

Aynı sorunu yaşadım, yukarıdaki andan itibaren benim için hiçbir şey işe yaramadı ama şimdi onu düzelttim

Sadece kaldırmak python.pipve sqlite3ve yeniden yükleme

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

şimdi tekrar kur

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

benim durumumda sqlite3tekrar yüklerken bazı hatalar gösterdi sonra yazdım

  1. sqlite3

çıkarılıp çıkarılmadığını kontrol etmek için terminalde ve ambalajından çıkarmaya başladı

bir kez sqlite3terminali ve yazma fireup yüklenir

  1. sqlite3
  2. database.db (bir veritabanı oluşturmak için)

Eminim bu sana kesinlikle yardımcı olacaktır


1

Windows işletim sistemi için bir çözüm arayan bu sayfaya gelen herkes için cevap koymak:

Henüz kurulu değilse, pysqlite3 veya db-sqlite3'ü kurmanız gerekir. yüklemek için aşağıdakileri kullanabilirsiniz.

  • pip kurulum pysqlite3
  • pip kurulum db-sqlite3

Benim için sorun sqlite3'ün DLL dosyasıyla ilgiliydi.

Çözüm:

  1. DLL dosyasını sqlite sitesinden aldım . Bu, python kurulumunuzun sürümüne bağlı olarak değişebilir.

  2. Bunu env'nin DLL dizinine yapıştırdım. benim için "C: \ Anaconda \ Lib \ DLLs" idi, ama sizinkini kontrol edin. DLL dosyasını yerleştirmeden önce ve sonra


Tam olarak hata yaptım. Bu bir şekilde sorunumu çözdü. Teşekkürler!
uqji

1

Bu konunun bugüne kadar hala varlığını hayal kırıklığına uğrattım. Geçenlerde CentOS 8.1'de vCD CLI kurmaya çalıştığım ve çalıştırmaya çalıştığımda aynı hatayla karşılandım. Benim durumumda çözmem gereken yol şu:

  • SQLite3'ü uygun önek ile sıfırdan kurun
  • Python Kurulumumu temizle
  • Python'u yeniden yüklemek için Make install'ı çalıştırın

Bunu vCD CLI ve VMware Container Service Extension'ın nasıl kurulacağına dair farklı bir blog postası oluşturmak için yaptığım için. Sonunda sorunu gidermek için kullandığım adımları yakaladım ve şu adresteki ayrı bir blog gönderisine koydum:

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

Umarım bu yararlıdır, çünkü yukarıdaki ipuçları bir çözüme ulaşmama yardımcı olmuşken, birkaçını birleştirip biraz değiştirmem gerekti.


Sağladığınız bağlantıyla bağlantınızı açıkladığınız için teşekkür ederiz! Takdir edildi.
Robert Columbia

-1

Sqlite3'ü indirin:

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

Yüklemek için şu adımları izleyin:

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

1
Bu soru 2009'da soruldu ve Debian 5 hakkındaydı. Sqlite3 artık depolarda mevcut (Wheezy'den beri) bu yüzden manuel olarak kurmaya gerek yok. Sanırım bu çoğu dağıtım için de geçerli.
Jérôme


-3

Kopyalamayı dene _sqlite3.soPython'un bulabilmesi için .

Şu kadar basit olmalıdır:

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

Güven bana, dene.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.