2013-04-12 61 views
0

我在嘗試導入mysql時遇到了Python問題。我的代碼的開始(我使用monkeyrunner來運行腳本):ImportError:沒有名爲MySQLdb的模塊 - Debian 6.0

#!/usr/bin/env python 

import sys 
import MySQLdb 
. 
. 
. 
etc 

每次我嘗試運行的代碼,我得到的電流誤差:

[email protected]:~/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 for python:

sudo apt-get reinstall python-mysqldb mysql-server 

但沒有什麼幫助。任何想法或提示?

問候,,,

+0

你使用['virtualenv'](https://pypi.python.org/pypi/virtualenv)嗎? – J0HN

+0

不,我在MySQL中爲Python安裝的唯一東西... –

回答

0

的問題是,monkeyrunner是不一樣的解釋爲默認系統的Python,並且不共享相同的站點包等

#!/usr/bin/env python在您的腳本的頂部是誤導。如果您實際上使用/usr/bin/env python test.py./test.py(假設爲chmod +x)運行腳本,它將起作用。但你不是,你用monkeyrunner運行它。

因此,您爲系統安裝的任何東西都可以在monkeyrunner內使用。您必須將其安裝爲monkeyrunner

此外,由於the docs說:

The monkeyrunner tool uses Jython, a implementation of Python that uses the Java programming language.

雖然Jython是Python和實現相同的Python語言和(幾乎)標準庫的CPython的,它沒有實現CPython的C API,因此可以不使用MySQLdb等C-API擴展。 (他們實際上正在研究一個聰明的包裝器,將來會改變這種情況,但這對今天不會有幫助。)

還有其他的MySQL驅動程序可以同時用於CPython和Jython(因爲它們使用純Python ),如PyMySQL。但最簡單的解決方案是使用Java的JDBC驅動程序。作爲Jython FAQ建議,要做到這一點最簡單的方法是:

Use zxJDBC which gives data database connectivity from Jython using the Python DB API 2.0 interface…

與直接使用JDBC,使用zxJDBC往往意味着你只需要改變一行在MySQLdb的代碼,使其工作。

+0

非常感謝你,現在我更好地理解這些東西是如何工作的:) –

0

我對你有同樣的問題。 和我試圖用zxJDBC來解決它。 但是當我運行腳本時,它找不到「org.gjt.mm.mysql.Driver」或者「com.mysql.jdbc.Driver」。即使我把系統CLASSPATH下的mysql-connector-java-5.1.34-bin.jar和zxJDBC.jar。 我試着在jython下運行這個腳本。有效。 所以我認爲這個問題與monkeyrunner有關。

相關問題