【问题标题】:ImportError: No module named MySQLdb - Debian 6.0ImportError:没有名为 MySQLdb 的模块 - Debian 6.0
【发布时间】:2013-04-12 21:13:27
【问题描述】:

我在尝试导入 mysql 时遇到了 Python 问题。我的代码的开头是(我正在使用 monkeyrunner 运行脚本):

#!/usr/bin/env python

import sys  
import MySQLdb
.
.
.
etc

每次我尝试运行代码时,都会出现当前错误:

dani@debian:~/public/Yandex Maps Test$ monkeyrunner test.py
130413 00:49:22.066:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception
130413 00:49:22.066:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last):
  File "/home/dani/public/Yandex Maps Test/test.py", line 4, in <module>
    import MySQLdb
ImportError: No module named MySQLdb

130413 00:49:22.066:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.PyException.fillInStackTrace(PyException.java:70)
.
.
.
etc

我尝试为python重新安装mysql:

sudo apt-get reinstall python-mysqldb mysql-server

但没有任何帮助。有什么想法或提示吗?

问候,,,

【问题讨论】:

  • 你使用virtualenv吗?
  • 不,我在 MySQL 中为 Python 安装的唯一东西......

标签: python mysql debian mysql-python


【解决方案1】:

问题在于 monkeyrunner 与默认系统 Python 的解释器不同,并且不共享相同的站点包等。

脚本顶部的 #!/usr/bin/env python 具有误导性。如果您实际上使用/usr/bin/env python test.py 或仅使用./test.py(假设chmod +x)运行您的脚本,它将起作用。但你不是,你正在使用monkeyrunner 运行它。

因此,您为系统安装的任何内容都不会在monkeyrunner 中使用。你必须为monkeyrunner 安装它。

此外,正如the docs 所说:

monkeyrunner 工具使用 Jython,这是一种使用 Java 编程语言的 Python 实现。

虽然 Jython 是 Python,并且实现了与 CPython 相同的 Python 语言和(几乎)标准库,但它没有实现 CPython C API,因此不能使用像 MySQLdb 这样的 C-API 扩展。 (他们实际上正在开发一个聪明的包装器,它将在未来改变这一点,但这对你今天没有帮助。)

还有其他 MySQL 驱动程序可以同时使用 CPython 和 Jython(因为它们使用纯 Python),例如 PyMySQL。但最简单的解决方案是只使用 Java 的 JDBC 驱动程序。正如Jython FAQ 建议的那样,最简单的方法是:

使用zxJDBC,它使用 Python DB API 2.0 接口提供来自 Jython 的数据数据库连接......

与直接使用 JDBC 不同,使用 zxJDBC 通常意味着您只需更改 MySQLdb 代码中的一行即可使其工作。

【讨论】:

  • 非常感谢,现在我更好地理解了这些东西是如何正常工作的 :)
【解决方案2】:

我和你有同样的问题。 我尝试使用 zxJDBC 来修复它。 但是当我运行脚本时,它找不到“org.gjt.mm.mysql.Driver”或“com.mysql.jdbc.Driver”。即使我将 mysql-connector-java-5.1.34-bin.jar 和 zxJDBC.jar 放在系统 CLASSPATH 下。 我尝试在 jython 下运行这个脚本。有效。 所以我认为这个问题与monkeyrunner有关。

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 2018-07-15
    • 2020-04-16
    • 2013-07-11
    • 2015-08-19
    • 2016-05-11
    • 2016-03-05
    • 1970-01-01
    • 2010-11-29
    相关资源
    最近更新 更多