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 ツールは、Java プログラミング言語を使用する Python の実装である Jython を使用します。

Jython は Python であり、CPython と同じ Python 言語と (ほぼ) 標準ライブラリを実装していますが、CPython C API を実装していないため、MySQLdb のような C-API 拡張機能を使用できません。(彼らは実際に、将来これを変更する巧妙なラッパーに取り組んでいますが、それは現在役に立ちません。)

など、CPython と Jython の両方で動作する他の MySQL ドライバーがあります (純粋な Python を使用するため) PyMySQL。しかし、最も簡単な解決策は、Java のJDBCドライバーを使用することです。Jython FAQが示唆しているように、これを行う最も簡単な方法は次のとおりです。

zxJDBCPython DB API 2.0 インターフェイスを使用して Jython からデータ データベース接続を提供するものを使用します…</p >

JDBC を直接使用する場合とは異なり、zxJDBC頻繁に使用すると、MySQLdb コードの 1 行を変更するだけで機能します。

于 2013-04-12T22:11:23.903 に答える