Nenhum módulo chamado _sqlite3

136

Estou tentando executar um aplicativo Django no meu VPS executando o Debian 5. Quando executo um aplicativo de demonstração, ele volta com este erro:

  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

Observando a instalação do Python, ocorre o mesmo erro:

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

Lendo na Web, eu aprendi que o Python 2.5 deve vir com todos os wrappers SQLite necessários incluídos. Preciso reinstalar o Python ou existe outra maneira de colocar esse módulo em funcionamento?

Alexander van Dijk
fonte
1
Mesmo problema é para compilado python 3.5.5 a partir da fonte
Alex-Bogdanov

Respostas:

133

Parece que seu makefile não incluiu o .soarquivo apropriado . Você pode corrigir esse problema com as etapas abaixo:

  1. Instale sqlite-devel(ou libsqlite3-devem alguns sistemas baseados no Debian)
  2. Reconfigure e recompile o Python com ./configure --enable-loadable-sqlite-extensions && make && sudo make install

Nota

A sudo make installparte definirá essa versão do python como o padrão em todo o sistema, o que pode ter conseqüências imprevistas. Se você executar este comando em sua estação de trabalho, provavelmente desejará instalá-lo juntamente com o python existente, o que pode ser feito sudo make altinstall.

jammyWolf
fonte
Obrigado jammyWolf. Eu não acho que "perdi" o arquivo após a primeira vez que executei o configure. Antes, executar o configure com o sqlite-devel já instalado fez toda essa diferença.
Jeff Taylor
4
Como posso instalar sqlite-devel? Eu estou em um personalizado linux sistema.I acabou de baixar sqlite-autoconf-3100200.tar.gze executar ./configure, make && make install. Depois de recompilar o python3, ele ainda não está funcionando.
AntiMoron
2
Para quem estiver lendo isso, adicione a opção de configuração na resposta. Foi isso que me salvou também. Caso contrário, não importa se você instalou o libsqlite3-dev.
Ticter
3
como verifico onde está o script de configuração?
Jenna Kwon
1
nenhuma dessas soluções (ref: tudo nesta página) funciona para o amazon linux com python 3.8.0
bgenchel
80

Eu tive o mesmo problema (construindo a python2.5partir da fonte no Ubuntu Lucid) e import sqlite3joguei a mesma exceção. Instalei a libsqlite3-devpartir do gerenciador de pacotes, recompilei o python2.5 e a importação funcionou.

Emilien
fonte
6
Exatamente! Você não precisa manipular manualmente com arquivos binários e ambiente. No meu caso, eu já tinha o Python 2.7 construído a partir do código-fonte; portanto, para minificar a compilação, executei o apt-get install libsqlite3-dev; ./configure; faça libinstall; faça sharedinstall;
oxfn
38

Eu tive o mesmo problema com o Python 3.5 no Ubuntu enquanto usava o pyenv .

Se você estiver instalando o python usando pyenv , ele será listado como um dos problemas comuns de compilação . Para resolvê-lo, remova a versão python instalada, instale os requisitos (para este caso em particular libsqlite3-dev) e reinstale a versão python.

Instância minúscula
fonte
22

Foi isso que fiz para fazê-lo funcionar.

Estou usando pythonbrew (que está usando pip) com o python 2.7.5 instalado.

Primeiro fiz o que Zubair (acima) disse e executei este comando:

sudo apt-get install libsqlite3-dev

Então eu executei este comando:

pip install pysqlite

Isso corrigiu o problema do banco de dados e eu recebi confirmação disso quando executei:

python manager.py syncdb
Joe
fonte
2
no Centos 6.5, execute em yum install sqlite-develvez da primeira linha.
precisa saber é o seguinte
3
Isso é bom para o Python 2, mas pysqliteagora está sqlite3no Python 3, e você não pode 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. Instale o sqlite-develpacote:

    yum install sqlite-devel -y

  2. Recompile o python da fonte:

    ./configure
    make
    make altinstall
John Zhang
fonte
10

Meu _sqlite3.so está em /usr/lib/python2.5/lib-dynload/_sqlite3.so. A julgar pelos seus caminhos, você deve ter o arquivo /usr/local/lib/python2.5/lib-dynload/_sqlite3.so.

Tente o seguinte:

find /usr/local -name _sqlite3.so

Se o arquivo não for encontrado, algo pode estar errado com a instalação do Python. Se estiver, verifique se o caminho para o qual está instalado está no caminho do Python. No shell do Python,

import sys
print sys.path

No meu caso, /usr/lib/python2.5/lib-dynload está na lista, portanto, é possível encontrar /usr/lib/python2.5/lib-dynload/_sqlite3.so.

Glenn Maynard
fonte
2
apenas verificado. o caminho está lá, mas _sqlite3.so está realmente ausente. Alguma sugestão se eu posso instalá-lo separadamente ou melhor para reinstalar o python? THX!
Alexander van Dijk
2
Parece que você criou e instalou o Python manualmente (os pacotes no seu sistema operacional são muito antigos?), Pois estão em / usr / local. Certifique-se de que o pacote dev do sqlite esteja instalado (libsqlite3-dev nas distribuições atuais, talvez não na sua), ou o Python não poderá criar o módulo. Se você instalá-lo, precisará reconstruir o Python para incluir esse módulo.
21119 Glenn Maynard
Hmm, eu instalei libsqlite3-dev e reconstruir python, mas agora eu recebo anothe erro: ImportError: ./_sqlite3.so: símbolo indefinido: PyUnicodeUCS4_DecodeUTF8
Alexander van Dijk
Estou confuso. Sua distribuição já possui o Python 2.5 ( packages.debian.org/lenny/python2.5 ). Por que você está construindo você mesmo?
Glenn Maynard
1
Mas você está executando o Python em / usr / local. Parece que você instalou o Python duas vezes - uma vez você e outra com o apt-get, e o do / usr / local está quebrado.
Glenn Maynard
8

Recentemente, tentei instalar o python 2.6.7 no meu desktop Ubuntu 11.04 para algum trabalho de desenvolvimento. Me deparei com problemas semelhantes a este segmento. Eu mamei corrigi-lo por:

  1. Ajustando o arquivo setup.py para incluir o caminho correto do desenvolvedor do sqlite. Snippet de código de 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/'
    ]

    Com o pouco que eu adicionei sendo '/ usr / lib / x86_64-linux-gnu /'.

  2. Depois de executar o make, não recebi nenhum aviso dizendo que o suporte ao sqlite não foi construído (ou seja, ele foi criado corretamente: P), mas após a execução make install, o sqlite3 ainda não foi importado com o mesmo " ImportError: No module named _sqlite3" whe running "import sqlite3".

    Portanto, a biblioteca foi compilada, mas não foi movida para o caminho de instalação correto, então copiei o .soarquivo ( 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/- estes são meus caminhos de construção, você provavelmente precisará ajustá-los à sua configuração).

Voila! O suporte ao SQLite3 agora funciona.

foomip
fonte
Obrigado! Apenas a primeira parte foi necessária para o Linux Mint Debian Edition, 2014
spookylukey
Obrigado! Exatamente o mesmo problema para mim. A biblioteca é construída, mas não copiada para o diretório correto.
precisa saber é o seguinte
8

Eu encontrei muitas pessoas que enfrentam esse problema porque, em meus próprios vps (cent os 7 x64), o Python com várias versões, resolvi-o desta maneira:

  1. Encontre o arquivo "_sqlite3.so"

    find / -name _sqlite3.so

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

  2. Encontre o diretório da biblioteca padrão python que você deseja usar,

    para mim /usr/local/lib/python3.6/lib-dynload

  3. Copie o arquivo:

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

Finalmente, tudo ficará bem.

Ehco
fonte
6
Não funcionou para mim. Got ImportError: dynamic module does not define module export function (PyInit__sqlite3)no CentOS 7.
xtluo
mesmo para mim, é que py2 .sonão pode ser usado para py3.6.4? @xtluo
MeadowMuffins
Em vez disso, recebi esse erro -ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
bgenchel
6

Isso funcionou para mim no Redhat Centos 6.5:

yum install sqlite-devel
pip install pysqlite
Ehsan88
fonte
1
apenas fyi eu não precisava fazer o passo pip
HashRocketSyntax
6

meu python é construído a partir do código-fonte, faltam opções na causa quando o exec configura a versão python: 3.7.4

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

fixo

Robin
fonte
3

Eu tenho o problema no FreeBSD 8.1:

- No module named _sqlite3 -

É resolvido pelo suporte a porta ----------

/usr/ports/databases/py-sqlite3

depois disso, podemos ver:

OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'
George
fonte
14
Essa resposta faz muito pouco sentido. Você pode revisar?
Tim Post
Eu tive o mesmo problema, FreeBSD 8.2 com Py2.7.2. Resolvido apenas executando o make / install novamente, para py-sqlite3.
Justin
você precisa fazer a desinstalação, se parecer instalado inicialmente. FreeBSD 10,2
Kunthar
2

O pacote python-pysqlite2 está instalado?

sudo apt-get install python-pysqlite2
bryan
fonte
1
O sqlite é instalado com o Python; você não precisa instalar um pacote separado para ele, e podemos dizer que ele já possui a biblioteca fornecida pelo Python. Instalar python-sqlite seria confuso na melhor das hipóteses.
Glenn Maynard
Cãibra cerebral. Eu quis dizer o pacote python-pysqlite2. Não consegui fazer o Django / sqlite funcionar no lenny sem este pacote. Eu atualizei minha resposta.
bryan
Eu tenho o python-pysqlite2 instalado.
Alexander van Dijk
2

Verificando seu arquivo settings.py. Você não escreveu apenas "sqlite" em vez de "sqlite3" para o mecanismo de banco de dados?

eu mesmo
fonte
2

sqlite3é enviado com Python. Eu também tive o mesmo problema, eu apenas desinstalei python3.6e instalei novamente.

Desinstale o python existente:

sudo apt-get remove --purge python3.6

Instale o 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
fonte
1

você deve estar em centos ou redhat e compilar o python você mesmo; é erro do python fazer isso no diretório de código-fonte do python e fazer isso abaixo

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

Eu tenho o mesmo problema, nada funcionou para mim a partir das ans acima, mas agora eu o corrigi

basta remover python.pipe sqlite3e reinstalação

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

agora instale novamente

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

no meu caso durante a instalação sqlite3novamente, mostrou algum erro, então eu digitei

  1. sqlite3

no terminal para verificar se foi removido ou não e começou a desembalar

uma vez sqlite3instalado o terminal de inicialização e escreva

  1. sqlite3
  2. database.db (para criar um banco de dados)

Tenho certeza que isso definitivamente vai ajudá-lo

tosky
fonte
1

Colocando a resposta para quem chega nesta página procurando uma solução para o sistema operacional Windows:

Você precisa instalar o pysqlite3 ou o db-sqlite3, se ainda não estiver instalado. você pode usar o seguinte para instalar.

  • pip install pysqlite3
  • pip instala db-sqlite3

Para mim, o problema estava no arquivo DLL do sqlite3.

Solução:

  1. Peguei o arquivo DLL do site sqlite . Isso pode variar com base na sua versão da instalação do python.

  2. Eu colei no diretório DLL do env. para mim foi "C: \ Anaconda \ Lib \ DLLs", mas verifique o seu. Antes e depois de colocar o arquivo DLL

Ikhurana
fonte
Eu tive o erro exato. De alguma forma, isso resolveu meu problema. Obrigado!
uqji
1

Fiquei decepcionado que esta questão ainda exista até hoje. Como recentemente tentei instalar o vCD CLI no CentOS 8.1 e fui recebido com o mesmo erro ao tentar executá-lo. A maneira que eu tive que resolvê-lo no meu caso é a seguinte:

  • Instale o SQLite3 do zero com o prefixo apropriado
  • Tornar limpa minha instalação do Python
  • Execute Make install para reinstalar o Python

Enquanto eu faço isso, crie um blog diferente sobre como instalar o vCD CLI e o VMware Container Service Extension. Acabei capturando as etapas que usei para corrigir o problema e colocá-lo em uma postagem de blog separada em:

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

Espero que seja útil, pois, embora as dicas acima tenham me ajudado a chegar a uma solução, tive que combinar algumas delas e modificá-las um pouco.

Eiad Al-Aqqad
fonte
Obrigado por divulgar sua afiliação com o link que você está fornecendo! É apreciado.
Robert Columbia
-1

Faça o download do sqlite3:

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

Siga estas etapas para instalar:

$tar xvfz sqlite-autoconf-3071502.tar.gz
$cd sqlite-autoconf-3071502
$./configure --prefix=/usr/local
$make install
Narendra Kumar
fonte
1
Esta pergunta foi feita em 2009 e era sobre o Debian 5. O sqlite3 agora está disponível nos repositórios (desde o Wheezy), portanto não há necessidade de instalá-lo manualmente. Eu acho que isso também é verdade para a maioria das distros.
Jérôme
-3

Você precisa instalar o pysqlite no seu ambiente python:

    $ pip install pysqlite
Darwin M.
fonte
-3

Tente copiar _sqlite3.sopara que o Python possa encontrá-lo.

Deve ser tão simples quanto:

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

Confie em mim, tente.

sen john
fonte