_sqlite3이라는 모듈이 없습니다.


136

데비안 5 를 실행하는 VPS 에서 Django 앱 을 실행하려고 합니다. 데모 앱을 실행하면 다음 오류가 발생합니다.

  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 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 래퍼가 포함되어 있어야합니다 . 파이썬을 다시 설치해야합니까, 아니면이 모듈을 시작하고 실행할 수있는 다른 방법이 있습니까?


1
동일한 문제는 소스에서 컴파일 된 파이썬 3.5.5에 대한 것입니다
Alex-Bogdanov

답변:


133

makefile에 적절한 .so파일이 포함되지 않은 것 같습니다 . 아래 단계에 따라이 문제를 해결할 수 있습니다.

  1. 설치 sqlite-devel(또는 libsqlite3-dev일부 데비안 기반 시스템)
  2. 다음을 사용하여 Python 재구성 및 재 컴파일 ./configure --enable-loadable-sqlite-extensions && make && sudo make install

노트

sudo make install부분은 그 파이썬 버전을 시스템 전체 표준으로 설정하여 예기치 않은 결과를 초래할 수 있습니다. 워크 스테이션에서이 명령을 실행하는 경우 기존 파이썬 과 함께 설치해야 할 것입니다 sudo make altinstall.


jammyWolf 감사합니다. 필자는 configure를 처음 실행 한 후에 파일을 "잃어버린"것이 아니라 sqlite-devel이 이미 설치된 상태에서 configure를 실행하면 이러한 차이가 모두 발생했다고 생각하지 않습니다.
Jeff Taylor

4
어떻게 설치 sqlite-devel합니까? 난 그냥 다운로드 한 사용자 정의 리눅스 system.I에있어 sqlite-autoconf-3100200.tar.gz및 실행 ./configure, make && make install. python3을 다시 컴파일 한 후에도 여전히 작동하지 않습니다.
AntiMoron

2
이 글을 읽는 사람은 반드시 답변에 configure 옵션을 추가하십시오. 저도 저를 구했습니다. 그렇지 않으면 libsqlite3-dev를 설치했는지는 중요하지 않습니다.
ticster

3
configure 스크립트가 어디에 있는지 어떻게 확인합니까?
Jenna Kwon

1
이러한 솔루션의 없음 (참고 :이 페이지의 모든)에 대한 작업 아마존 리눅스와 파이썬 3.8.0
bgenchel

80

나는 같은 문제 ( python2.5우분투 루시드의 소스에서 빌드 )가 있었고이 import sqlite3같은 예외를 던졌습니다. libsqlite3-dev패키지 관리자에서 설치 하고 python2.5를 다시 컴파일 한 다음 가져 오기가 작동했습니다.


6
바로 그거죠! 이진 파일과 환경을 수동으로 조작 할 필요는 없습니다. 필자의 경우 소스에서 이미 Python 2.7을 빌드 했으므로 컴파일을 최소화하기 위해 apt-get install libsqlite3-dev를 실행했습니다. ./configure; libinstall을 만드십시오; 공유 설치;
oxfn

38

pyenv 사용하는 동안 Ubuntu에서 Python 3.5와 동일한 문제가 발생 했습니다 .

pyenv를 사용하여 파이썬을 설치하는 경우 일반적인 빌드 문제 중 하나로 나열됩니다 . 이 문제를 해결하려면 설치된 python 버전을 제거하고 요구 사항 (이 특별한 경우 libsqlite3-dev)을 설치 한 다음 python 버전을 다시 설치하십시오.


22

이것이 내가 작동하도록하는 일입니다.

python 2.7.5가 설치된 pythonbrew (pip를 사용 중)를 사용하고 있습니다.

먼저 Zubair (위)가 말한 것을 수행하고 다음 명령을 실행했습니다.

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
stephen

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 경로에 있는지 확인하십시오. 파이썬 셸에서

import sys
print sys.path

필자의 경우 /usr/lib/python2.5/lib-dynload가 목록에 있으므로 /usr/lib/python2.5/lib-dynload/_sqlite3.so를 찾을 수 있습니다.


2
방금 확인했습니다. 경로가 있지만 _sqlite3.so가 실제로 누락되었습니다. 별도로 설치하거나 파이썬을 다시 설치하는 것이 더 좋은지 제안하십시오. 고마워!
Alexander van Dijk

2
/ usr / local에 있기 때문에 파이썬을 수동으로 빌드하고 설치 한 것 같습니다 (OS의 패키지가 너무 오래 되었습니까?). sqlite dev 패키지가 설치되어 있는지 확인하십시오 (libsqlite3-dev는 현재 배포판에 있고 아마도 배포판에는 없습니다). 그렇지 않으면 Python이 모듈을 빌드 할 수 없습니다. 설치하면 해당 모듈을 포함하도록 Python을 다시 빌드해야합니다.
Glenn Maynard

흠, 나는 libsqlite3-dev를 설치하고 파이썬을 다시 빌드하지만 이제는 오류가 발생합니다 : ImportError : ./_sqlite3.so : 정의되지 않은 기호 : PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk

혼란 스러워요. 배포판에 Python 2.5가 이미 있습니다 ( packages.debian.org/lenny/python2.5 ). 왜 당신은 그것을 스스로 구축하고 있습니까?
Glenn Maynard

1
그러나 / usr / local에서 Python을 실행하고 있습니다. 파이썬을 두 번 설치 한 것처럼 보입니다. 한 번 자신과 apt-get으로 한 번, / usr / local에있는 것이 깨졌습니다.
Glenn Maynard

8

최근에 일부 개발 작업을 위해 Ubuntu 11.04 데스크톱에 python 2.6.7을 설치하려고했습니다. 이 스레드와 비슷한 문제가 발생했습니다. 나는 그것을 고치기 위해 mamaged했다.

  1. 올바른 sqlite dev 경로를 포함하도록 setup.py 파일 조정 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

감사합니다! 나에게 똑같은 문제. 라이브러리가 작성되었지만 올바른 디렉토리로 복사되지 않았습니다.
Student222

8

내 vps (cent os 7 x64)에서 Multi-version Python이 다음과 같은 방식으로 해결 되었기 때문에 많은 사람들 이이 문제를 해결한다는 것을 알았습니다.

  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
단지 핍 단계를 수행 할 필요가 없었습니다
HashRocketSyntax

6

내 파이썬이 소스에서 빌드되었으므로 exec가 파이썬 버전을 구성 할 때 원인이 옵션이 누락되었습니다 : 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
이 대답은 거의 이해가되지 않습니다. 수정할 수 있습니까?
Tim Post

FreeBSD 8.2 w / Py2.7.2와 같은 문제가있었습니다. py-sqlite3의 경우 make / install을 다시 실행하여 해결되었습니다.
Justin

처음에 설치되어있는 것으로 보이면 제거해야합니다. freebsd 10.2
Kunthar

2

는 IS 파이썬 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 파일을 확인 중입니다. 데이터베이스 엔진에 대해 "sqlite3"대신 "sqlite"를 쓰지 않았습니까?


2

sqlite3파이썬과 함께 제공됩니다. 나도 같은 문제가 있었고 방금 제거한 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

당신은 centos 또는 redhat에 있어야하고 파이썬을 직접 컴파일해야합니다. 파이썬의 버그는 파이썬 소스 코드 디렉토리 에서이 작업을 수행하고 아래에서 수행하십시오.

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

터미널에서 제거 여부를 확인하고 포장을 풀기 시작했습니다.

일단 sqlite3fireup 터미널을 설치하고 쓰기

  1. sqlite3
  2. database.db (데이터베이스를 만들려면)

이것이 확실히 당신을 도울 것입니다 확신합니다


1

이 페이지에 방문한 모든 사람이 Windows OS 용 솔루션을 찾고 있다고 답하십시오.

pysqlite3 또는 db-sqlite3을 아직 설치하지 않은 경우 설치해야합니다. 다음을 사용하여 설치할 수 있습니다.

  • pip install pysqlite3
  • pip 설치 db-sqlite3

나에게 문제는 sqlite3의 DLL 파일과 관련이 있습니다.

해결책:

  1. sqlite site 에서 DLL 파일을 가져 왔습니다 . 파이썬 설치 버전에 따라 다를 수 있습니다.

  2. env의 DLL 디렉토리에 붙여 넣었습니다. 나를 위해 그것은 "C : \ Anaconda \ Lib \ DLLs"였지만 당신의 것을 확인하십시오. DLL 파일 배치 전후


나는 정확한 오류가 있었다. 이것은 어떻게 든 내 문제를 해결했습니다. 감사!
uqji

1

이 문제는 오늘날까지도 여전히 실망했습니다. 최근 CentOS 8.1에 vCD CLI를 설치하려고 시도했지만 실행하려고 할 때 동일한 오류가 발생했습니다. 내 경우에 그것을 해결해야했던 방법은 다음과 같습니다.

  • 올바른 접두사를 사용하여 SQLite3을 처음부터 설치하십시오.
  • 파이썬 설치를 깨끗하게 만드십시오
  • 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 년에 요청되었으며 데비안 5에 관한 것입니다. sqlite3는 현재 Wheezy부터 repos에서 사용 가능 하므로 수동으로 설치할 필요가 없습니다. 나는 이것이 대부분의 배포판에서도 마찬가지라고 생각합니다.
Jérôme


-3

_sqlite3.so파이썬이 찾을 수 있도록 복사 해보 십시오.

다음과 같이 간단해야합니다.

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

날 믿어 봐

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.