ImportError:没有名为MySQLdb的模块 - Debian 6.0

时间:2013-04-12 21:13:27

标签: python mysql debian mysql-python

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

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

此致,,,

2 个答案:

答案 0 :(得分:0)

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

脚本顶部的#!/usr/bin/env python会产生误导。如果您实际使用/usr/bin/env python test.py./test.py(假设为chmod +x)运行脚本,则可以使用。但你不是,你用monkeyrunner运行它。

因此,您为系统安装的任何内容都不会在monkeyrunner中使用Python。您必须为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代码中的一行即可使其工作。

答案 1 :(得分:0)

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