【问题标题】:Python 2.7 ImportError: No module named pysqlite2Python 2.7 ImportError:没有名为 pysqlite2 的模块
【发布时间】:2017-06-04 07:23:06
【问题描述】:

我收到以下错误:

from pysqlite2 import dbapi2 as sqlite ImportError: No module named pysqlite2

我尝试安装它:

python -mpip install pysqlite2

我收到此错误:

找不到满足 pysqlite2 要求的版本 (来自版本:)找不到 pysqlite2 的匹配分布

我读到这个: ImportError: No module named pysqlite2

但解决方案是更改我不允许这样做的代码。 此代码在一个站点上运行,我们只是希望它在另一个站点上运行。

我该怎么办(我应该注意我使用的是Windows 7)?

【问题讨论】:

    标签: python python-2.7 sqlite


    【解决方案1】:

    正确答案

    正确的答案是你的代码太旧了,需要更新。去做。分支或分叉存储库,尽一切努力让现代代码工作。


    你不能做正确的事™

    如果您出于人为的原因无法或不愿意做这些事情,您有几个选择,从最不可怕到最可怕:

    • Create your own pysqlite2 module,它是 sqlite3 的包装器。您可能只需要调整一些功能,甚至可能不必这样做。它可能看起来像这样:

      import sqlite3
      
      connect = sqlite3.connect
      

      我不确定代码使用了哪些功能。但是,如果你做得对,这起作用。

    • 通过monkeypatching更改原代码。这很粗糙且容易出错,而且很难做到正确。

    • 将原代码改为doing some AST hacks。这是困难和骇人听闻的。你可以做到。但你不应该。你真的真的不应该。

    只要做正确的事,但如果你做不到,可能的,可能需要付出很多努力,做错事并让它正常工作。只要确保让大量的 cmets 向那些追随你并不得不维护这团胶带和打包线的可怜的开发人员深表歉意。

    你永远不会知道,他们可能是一个知道你住在哪里的杀人精神病患者。 (我知道如果我必须维护这样的代码,我会有点杀人不眨眼)

    【讨论】:

    • 当您说代码需要更新时,您实际上是指停止使用 pysqlite2 并开始使用 sqlite3 吗?但是我在哪里可以阅读有关更改以使用新包测试我的代码的信息?
    • @avi 完全正确。如果有的话,可能没有那么多变化。 dbapi 规范非常明确,afaik。我只是更改名称并运行代码,看看它是否会爆炸。不应该,但如果确实如此,请修复这些点。
    猜你喜欢
    • 2015-06-28
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多