【问题标题】:No module named _sqlite3没有名为 _sqlite3 的模块
【发布时间】:2010-11-15 16:33:14
【问题描述】:

我试图在我的VPS 上运行Django 应用程序,运行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,还是有其他方法可以启动并运行这个模块?

【问题讨论】:

  • 从源代码编译的python 3.5.5也有同样的问题

标签: python sqlite debian python-import


【解决方案1】:

您的 makefile 似乎没有包含适当的 .so 文件。您可以通过以下步骤解决此问题:

  1. 在某些基于 Debian 的系统上安装 sqlite-devel(或 libsqlite3-dev
  2. ./configure --enable-loadable-sqlite-extensions &amp;&amp; make &amp;&amp; sudo make install重新配置和重新编译Python

注意

sudo make install 部分会将 python 版本设置为系统范围的标准,这可能会产生无法预料的后果。如果您在工作站上运行此命令,您可能希望将它现有的 python 一起安装,这可以通过sudo make altinstall 来完成。

【讨论】:

  • 如何安装sqlite-devel ?我在一个定制的 linux 系统上。我刚刚下载了sqlite-autoconf-3100200.tar.gz 并运行./configure,make &amp;&amp; make install。我重新编译python3后它仍然无法正常工作。
  • 对于阅读本文的任何人,请确保在答案中添加配置选项。这也救了我。否则,你安装 libsqlite3-dev 并不重要。
  • 如何查看配置脚本的位置?
  • 我正在使用pyenv,在安装libsqlite3-dev 后,我不得不使用pyenv install &lt;python-version&gt; 重新安装您的python 版本。
  • 这些解决方案(参考:本页上的所有内容)均不适用于带有 python 3.8.0 的 amazon linux
【解决方案2】:

我遇到了同样的问题(在 Ubuntu Lucid 上从源代码构建 python2.5),import sqlite3 抛出了同样的异常。我已经从包管理器中安装了libsqlite3-dev,重新编译了python2.5,然后导入成功了。

【讨论】:

  • 没错!您不必手动操作二进制文件和环境。就我而言,我已经从源代码构建了 Python 2.7,因此,为了缩小编译,我执行了 apt-get install libsqlite3-dev; 。/配置;进行库安装;进行共享安装;
【解决方案3】:

在使用pyenv 时,我在 Ubuntu 上使用 Python 3.5 时遇到了同样的问题。

如果您使用pyenv 安装python,它被列为common build problems 之一。要解决它,请删除已安装的 python 版本,安装要求(对于这种特殊情况libsqlite3-dev),然后重新安装 python 版本

pyenv install <python-version> 

然后根据需要重新创建 virtualenv。

【讨论】:

  • 不需要删除已安装的版本,pyenv install &lt;python-version&gt; 会询问是否应该覆盖并重新编译。
【解决方案4】:

这就是我为了让它工作而做的。

我正在使用安装了 python 2.7.5 的 pythonbrew(它正在使用 pip)。

我首先按照 Zubair(上面)所说的执行了这个命令:

sudo apt-get install libsqlite3-dev

然后我运行了这个命令:

pip install pysqlite

这解决了数据库问题,我在运行时得到了确认:

python manager.py syncdb

【讨论】:

  • 在 Centos 6.5 中运行 yum install sqlite-devel 而不是第一行。
  • 这对 Python 2 来说很好,但 pysqlite 现在在 Python 3 中是 sqlite3,而你不能 pip -m install 那。
  • pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library
  • @Joe 我认为应该是 manage.py 而不是 manager.py
【解决方案5】:
  1. 安装sqlite-devel 包:

    yum install sqlite-devel -y

  2. 从源代码重新编译python:

    ./configure
    make
    make altinstall
    

【讨论】:

  • 我做了 1(yum install sqlite-devl -y) 这没关系。在#2中,我得到了这个错误bash: ./configure: No such file or directory。我该如何解决。
  • 在 make 命令上花费了很多时间。这到底是做什么的?是重新编译centOS内核还是什么?
【解决方案6】:

我的 python 是从源代码构建的,原因是执行配置时缺少选项 python版本:3.7.4

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

固定

【讨论】:

    【解决方案7】:

    我发现很多人遇到这个问题是因为多版本 Python, 在我自己的 vps(cent os 7 x64)上,我以这种方式解决了它:

    1. 找到文件“_sqlite3.so”

      find / -name _sqlite3.so
      

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

    2. 找到你要使用的python标准库的目录,

      对我来说/usr/local/lib/python3.6/lib-dynload

    3. 复制文件:

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

    最后,一切都会好起来的。

    【讨论】:

    • 对我不起作用。在 CentOS 7 上获得 ImportError: dynamic module does not define module export function (PyInit__sqlite3)
    • 和我一样,py2.so不能用于py3.6.4吗? @xtluo
    • 我收到了这个错误 - ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
    • 似乎对我有用:sudo cp /usr/lib64/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so /usr/local/lib/python3 .7/lib-dynload/_sqlite3.so。现在我可以运行 tensorboard 而不会出现 _sqlite3 错误!谢谢
    【解决方案8】:

    我的 _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 外壳中,

    import sys
    print sys.path
    

    在我的例子中,/usr/lib/python2.5/lib-dynload 在列表中,所以它能够找到 /usr/lib/python2.5/lib-dynload/_sqlite3.so。

    【讨论】:

    • 刚刚检查过。路径在那里,但 _sqlite3.so 确实丢失了。有什么建议我可以单独安装还是更好地重新安装python?谢谢!
    • 看起来您手动构建和安装了 Python(您的操作系统中的软件包是否太旧?),因为它位于 /usr/local。确保安装了 sqlite 开发包(当前发行版中的 libsqlite3-dev,可能不在您的发行版中),否则 Python 将无法构建该模块。如果您安装它,则需要重新构建 Python 以使其包含该模块。
    • 嗯,我安装了 libsqlite3-dev 并重建 python,但现在我得到另一个错误:ImportError: ./_sqlite3.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8
    • 我很困惑。你的发行版已经有 Python 2.5 (packages.debian.org/lenny/python2.5)。为什么要自己建造?
    • 但是您在 /usr/local 之外运行 Python。看起来你安装了两次 Python——一次是自己安装的,一次是用 apt-get 安装的,而 /usr/local 中的那个坏了。
    【解决方案9】:

    我最近尝试在我的 Ubuntu 11.04 桌面上安装 python 2.6.7 以进行一些开发工作。遇到与此线程类似的问题。我想通过以下方式修复它:

    1. 调整 setup.py 文件以包含正确的 sqlite 开发路径。 setup.py 中的代码 sn-p:

      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 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/ - 这些是我的构建路径,您可能需要根据您的设置调整它们)。

    瞧! SQLite3 支持现在有效。

    【讨论】:

    • 谢谢! Linux Mint Debian 版 2014 只需要第一部分
    • 谢谢!对我来说完全相同的问题。该库已构建但未复制到正确的目录。
    【解决方案10】:

    这在 Redhat Centos 6.5 中对我有用:

    yum install sqlite-devel
    pip install pysqlite
    

    【讨论】:

    • 仅供参考,我不需要执行 pip 步骤
    【解决方案11】:

    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
    

    【讨论】:

    • 在 Debian Buster 上运行良好
    【解决方案12】:

    python-pysqlite2 包安装了吗?

    sudo apt-get install python-pysqlite2
    

    【讨论】:

    • sqlite 与 Python 一起安装;你不需要为它安装一个单独的包,我们可以看出他已经有了 Python 提供的库。安装 python-sqlite 充其量只会令人困惑。
    • 脑抽筋。我的意思是 python-pysqlite2 包。如果没有这个包,我无法让 Django/sqlite 在 lenny 上工作。我已经更新了我的答案。
    • 我已经安装了 python-pysqlite2。
    【解决方案13】:

    我在 FreeBSD 8.1 中遇到了问题:

    - No module named _sqlite3 -
    

    通过站端口解决----------

    /usr/ports/databases/py-sqlite3
    

    这个之后可以看到:

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

    【讨论】:

    • 这个答案没什么意义。可以修改一下吗?
    • 我遇到了同样的问题,FreeBSD 8.2 w/Py2.7.2。对于 py-sqlite3,只需再次运行 make/install 即可解决。
    • 如果一开始似乎已安装,则必须进行卸载。 freebsd 10.2
    【解决方案14】:

    对于带有 Redhat 7 或 Centos 7 的 Python 3.7.8。

    • 安装 sqlite-devel
    $ yum install sqlite-devel
    
    • 使用 sqllite 扩展编译和安装 Python3
    $ ./configure --enable-optimizations --enable-loadable-sqlite-extensions
    $ make install
    

    【讨论】:

      【解决方案15】:

      检查您的 settings.py 文件。 数据库引擎不是只写“sqlite”而不是“sqlite3”吗?

      【讨论】:

        【解决方案16】:

        为登陆此页面寻找 Windows 操作系统解决方案的任何人提供答案:

        如果尚未安装,您必须安装 pysqlite3 或 db-sqlite3。您可以使用以下方式安装。

        • 点安装 pysqlite3
        • pip install db-sqlite3

        对我来说,问题在于 sqlite3 的 DLL 文件。

        解决方案:

        1. 我从sqlite site 获取了 DLL 文件。这可能会因您的 python安装版本。

        2. 我贴在DLL目录下 环境。对我来说是“C:\Anaconda\Lib\DLLs”,但请检查你的。

        【讨论】:

        • 我遇到了确切的错误。这以某种方式解决了我的问题。谢谢!
        【解决方案17】:

        你必须在centos或redhat自己编译python, 这是python的错误 在你的 python 源代码目录中执行此操作并在下面执行此操作

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

        【讨论】:

          【解决方案18】:

          我遇到了同样的问题,上面的答案对我没有任何帮助 但现在我修复了它

          只需删除 python.pipsqlite3 并重新安装

          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 启动终端并写入

          1. sqlite3
          2. database.db(创建数据库)

          我相信这一定会对你有所帮助

          【讨论】:

          • 不适用于 Ubuntu、Python 3.7.10、Jupyter 6.1.5
          【解决方案19】:

          我很失望这个问题直到今天仍然存在。正如我最近尝试在 CentOS 8.1 上安装 vCD CLI 一样,我在尝试运行它时遇到了同样的错误。在我的情况下,我必须解决的方法如下:

          • 使用正确的前缀从头开始安装 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

          我希望这会有所帮助,因为虽然上面的提示帮助我找到了解决方案,但我不得不将其中的一些技巧结合起来并进行一些修改。

          【讨论】:

          • 感谢您披露与您提供的链接的隶属关系!不胜感激。
          【解决方案20】:

          如果您使用的是 FreeBSD,请尝试像这样安装 sqlite。

          pkg install py27-sqlite3-2.7.10_6
          

          【讨论】:

            【解决方案21】:

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

            【讨论】:

            • 这个问题是在 2009 年提出的,是关于 Debian 5 的。sqlite3 现在是available in the repos(从 Wheezy 开始),所以不需要手动安装它。我想大多数发行版也是如此。
            【解决方案22】:

            我在使用asdf 安装 Python 3.8.11 后遇到了同样的问题

            解决问题:

            我必须安装libsqlite3-dev

            sudo apt-get install libsqlite3-dev
            

            然后通过asdf卸载Python

            asdf uninstall python 3.8.11
            

            然后通过asdf再次安装Python

            asdf install python 3.8.11
            

            【讨论】:

              【解决方案23】:

              你需要在你的python环境中安装pysqlite

                  $ pip install pysqlite
              

              【讨论】:

                【解决方案24】:

                尝试复制 _sqlite3.so 以便 Python 可以找到它。

                应该很简单:

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

                相信我,试试吧。

                【讨论】:

                  猜你喜欢
                  • 2012-07-20
                  • 2012-06-02
                  • 2017-10-15
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-12-06
                  • 2015-03-11
                  相关资源
                  最近更新 更多