ไม่มีโมดูลชื่อ _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

ดูเหมือนว่า makefile ของคุณไม่มี.soไฟล์ที่เหมาะสม คุณสามารถแก้ไขปัญหานี้ได้ด้วยขั้นตอนด้านล่าง:

  1. ติดตั้งsqlite-devel(หรือlibsqlite3-devบนระบบที่ใช้ Debian บางระบบ)
  2. กำหนดค่าและคอมไพล์ Python ใหม่ด้วยไฟล์ ./configure --enable-loadable-sqlite-extensions && make && sudo make install

บันทึก

sudo make installส่วนหนึ่งจะตั้งว่ารุ่นหลามจะเป็นมาตรฐานทั้งระบบซึ่งจะมีผลกระทบ unforseen ถ้าคุณเรียกใช้คำสั่งนี้ในข่ายของคุณคุณอาจจะต้องการให้มีการติดตั้งไว้ข้างsudo make altinstallหลามมีอยู่ซึ่งสามารถทำได้ด้วย


ขอบคุณ jammyWolf ฉันไม่คิดว่าฉันจะ "หาย" ไฟล์หลังจากครั้งแรกที่เรียกใช้การกำหนดค่า แต่การรันการกำหนดค่าด้วย sqlite-devel ที่ติดตั้งไว้แล้วทำให้เกิดความแตกต่างทั้งหมดนี้
Jeff Taylor

4
ฉันจะติดตั้งได้sqlite-develอย่างไร? ฉันอยู่บนลินุกซ์ที่กำหนดเอง system.I เพียงดาวน์โหลดsqlite-autoconf-3100200.tar.gzและเรียกใช้,./configure make && make installหลังจากคอมไพล์ python3 อีกครั้งมันก็ยังใช้งานไม่ได้
AntiMoron

2
สำหรับใครก็ตามที่อ่านสิ่งนี้อย่าลืมเพิ่มตัวเลือกการกำหนดค่าในคำตอบ นั่นคือสิ่งที่ช่วยฉันด้วย มิฉะนั้นจะไม่สำคัญว่าคุณได้ติดตั้ง libsqlite3-dev
ticster

3
ฉันจะตรวจสอบได้อย่างไรว่าสคริปต์กำหนดค่าอยู่ที่ไหน
Jenna Kwon

1
ไม่มีวิธีแก้ปัญหาเหล่านี้ (อ้างอิง: ทั้งหมดในหน้านี้) ใช้ได้กับ amazon linux ด้วย python 3.8.0
bgenchel

80

ฉันมีปัญหาเดียวกัน (สร้างpython2.5จากซอร์สบน Ubuntu Lucid) และimport sqlite3โยนข้อยกเว้นเดียวกันนี้ ฉันได้ติดตั้งlibsqlite3-devจากตัวจัดการแพ็คเกจแล้วคอมไพล์ python2.5 ใหม่แล้วการนำเข้าก็ใช้งานได้


6
แน่นอน! คุณไม่จำเป็นต้องจัดการกับไฟล์ไบนารีและสภาพแวดล้อมด้วยตนเอง ในกรณีของฉันฉันมี Python 2.7 ที่สร้างขึ้นจากซอร์สแล้วดังนั้นเพื่อลดการรวบรวมฉันได้ดำเนินการ apt-get install libsqlite3-dev; ./configure; ทำ libinstall; ทำการติดตั้งร่วมกัน
oxfn

38

ฉันมีปัญหาเดียวกันกับงูหลาม 3.5 บน Ubuntu ในขณะที่ใช้pyenv

หากคุณกำลังติดตั้งหลามใช้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
นั่นเป็นสิ่งที่ดีสำหรับงูหลาม 2 แต่pysqliteอยู่ในขณะนี้sqlite3ในหลาม 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
stephen


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 shell

import sys
print sys.path

ในกรณีของฉัน /usr/lib/python2.5/lib-dynload อยู่ในรายการดังนั้นจึงสามารถค้นหา /usr/lib/python2.5/lib-dynload/_sqlite3.so


2
เพิ่งตรวจสอบ เส้นทางอยู่ในนั้น แต่ _sqlite3.so หายไปอย่างแน่นอน ข้อเสนอแนะใด ๆ ที่ฉันสามารถติดตั้งแยกต่างหากหรือดีกว่าในการติดตั้ง python ใหม่? ขอบคุณ!
Alexander van Dijk

2
ดูเหมือนว่าคุณสร้างและติดตั้ง Python ด้วยตนเอง (แพ็คเกจในระบบปฏิบัติการของคุณเก่าเกินไปหรือไม่) เนื่องจากอยู่ใน / usr / local ตรวจสอบให้แน่ใจว่าได้ติดตั้งแพ็คเกจ sqlite dev แล้ว (libsqlite3-dev ใน distros ปัจจุบันอาจไม่ใช่ของคุณ) มิฉะนั้น Python จะไม่สามารถสร้างโมดูลได้ หากคุณติดตั้งคุณจะต้องสร้าง Python ใหม่เพื่อรวมโมดูลนั้น
Glenn Maynard

อืมฉันติดตั้ง libsqlite3-dev และสร้าง python ใหม่ แต่ตอนนี้ฉันได้รับข้อผิดพลาด anothe: ImportError: ./_sqlite3.so: สัญลักษณ์ที่ไม่ได้กำหนด: PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk

ฉันสับสน. distro ของคุณมี Python 2.5 อยู่แล้ว ( package.debian.org/lenny/python2.5 ) ทำไมคุณถึงสร้างมันขึ้นมาเอง?
Glenn Maynard

1
แต่คุณกำลังเรียกใช้ Python จาก / usr / local ดูเหมือนว่าคุณติดตั้ง Python สองครั้ง - ครั้งเดียวกับ apt-get และอีกครั้งใน / usr / local เสีย
Glenn Maynard

8

ฉันเพิ่งลองติดตั้ง python 2.6.7 บนเดสก์ท็อป Ubuntu 11.04 สำหรับงาน dev บางอย่าง เจอปัญหาที่คล้ายกันกับหัวข้อนี้ ฉันแก้ไขเพื่อแก้ไขโดย:

  1. การปรับไฟล์ setup.py เพื่อรวมเส้นทาง dev 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. หลังจากทำงานให้ฉันไม่ได้รับการเตือนใด ๆ ที่บอกว่าการสนับสนุน 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 ใช้งานได้แล้ว


ขอบคุณ! จำเป็นต้องมีเพียงส่วนแรกสำหรับ 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. ค้นหา dir of python Standard library ที่คุณต้องการใช้

    สำหรับฉัน /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

7

python ของฉันสร้างจากแหล่งที่มาสาเหตุคือไม่มีตัวเลือกเมื่อ exec กำหนดค่าเวอร์ชัน python: 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

1
เพียงแค่ฉันไม่จำเป็นต้องทำขั้นตอน pip
HashRocketSyntax

3

ฉันมีปัญหาใน FreeBSD 8.1:

- No module named _sqlite3 -

แก้ไขโดยยืนพอร์ต ----------

/usr/ports/databases/py-sqlite3

หลังจากนี้สามารถดู:

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

14
คำตอบนี้มีเหตุผลน้อยมาก แก้ไขใหม่ได้ไหม
Tim Post

ฉันมีปัญหาเดียวกัน FreeBSD 8.2 w / Py2.7.2 แก้ไขได้โดยเพียงแค่เรียกใช้ make / install อีกครั้งสำหรับ py-sqlite3
Justin

คุณต้องทำการถอนการติดตั้งหากดูเหมือนว่าติดตั้งในตอนแรก
freebsd

2

เป็นหลาม pySqlite2แพคเกจติดตั้ง?

sudo apt-get install python-pysqlite2

1
sqlite ติดตั้งด้วย Python คุณไม่จำเป็นต้องติดตั้งแพ็คเกจแยกต่างหากสำหรับมันและเราสามารถบอกได้ว่าเขามีไลบรารีที่ให้มาด้วย Python อยู่แล้ว การติดตั้ง python-sqlite จะทำให้เกิดความสับสนได้ดีที่สุด
Glenn Maynard

ตะคริวในสมอง ฉันหมายถึงแพ็คเกจ python-pysqlite2 ฉันไม่สามารถให้ Django / sqlite ทำงานกับ lenny ได้หากไม่มีแพ็คเกจนี้ ฉันได้อัปเดตคำตอบแล้ว
bryan

ฉันติดตั้ง python-pysqlite2 แล้ว
Alexander van Dijk

2

ตรวจสอบไฟล์ settings.py ของคุณ คุณไม่ได้เขียนแค่ "sqlite" แทน "sqlite3" สำหรับโปรแกรมฐานข้อมูลหรือไม่?


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 ที่ทำสิ่งนี้ในซอร์สโค้ด python ของคุณและทำสิ่งนี้ด้านล่าง

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

1

ฉันพบปัญหาเดียวกันไม่มีอะไรได้ผลสำหรับฉันจาก ans ด้านบน แต่ตอนนี้ฉันแก้ไขแล้วโดย

เพียง แต่เอา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 (เพื่อสร้างฐานข้อมูล)

ฉันมั่นใจว่านี่จะช่วยคุณได้แน่นอน


1

ให้คำตอบสำหรับทุกคนที่เข้ามาในหน้านี้เพื่อค้นหาโซลูชันสำหรับ Windows OS:

คุณต้องติดตั้ง 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 Extension ฉันได้สรุปขั้นตอนที่ใช้ในการแก้ไขปัญหาแล้วนำไปไว้ในบล็อกโพสต์แยกต่างหากที่:

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

ฉันหวังว่านี่จะเป็นประโยชน์เนื่องจากในขณะที่เคล็ดลับข้างต้นช่วยให้ฉันหาวิธีแก้ปัญหาได้ แต่ฉันต้องรวมบางส่วนเข้าด้วยกันและแก้ไขเล็กน้อย


ขอขอบคุณสำหรับการเปิดเผยความเกี่ยวข้องกับลิงค์ที่คุณให้มา! เป็นที่ชื่นชม
Robert Columbia

-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 มีให้บริการแล้วใน repos (ตั้งแต่ Wheezy) ดังนั้นจึงไม่จำเป็นต้องติดตั้งด้วยตนเอง ฉันเดาว่านี่เป็นเรื่องจริงสำหรับนักธุรกิจส่วนใหญ่เช่นกัน
Jérôme


-3

ลองคัดลอก_sqlite3.soเพื่อให้ Python ค้นหาได้

มันควรจะง่ายเหมือน:

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

เชื่อฉันลองดูสิ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.