0

在尝试导入 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

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

问候,,,

4

2 回答 2

0

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

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

因此,您为系统安装的任何内容 Python 都不会在monkeyrunner. 您必须安装它monkeyrunner

此外,正如文档所说:

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

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

还有其他 MySQL 驱动程序可与 CPython 和 Jython 一起使用(因为它们使用纯 Python),例如PyMySQL. 但最简单的解决方案是只使用 Java 的JDBC驱动程序。正如Jython 常见问题解答所建议的那样,最简单的方法是:

使用zxJDBC它通过 Python DB API 2.0 接口从 Jython 提供数据数据库连接......</p>

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

于 2013-04-12T22:11:23.903 回答
0

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

于 2015-02-04T08:09:44.213 回答