2

簡単な質問... 私はいくつかのタスクを実行するために Jython を使用しており、いくつかの MySQL データベースにアクセスする必要があります... Python2.5 用の MySQL データベース コネクタを見つけました。jython/python のインストールには付属していません (サードパーティ製です)。モジュールのフォルダーを main.py と同じディレクトリに配置しましたが、起動すると、モジュールが見つからないことがわかります。インポートのためにPython3.2でこれを行ったことがありますが、同じように機能すると思いました。

Jython は非標準の Python モジュールをインポートできますか? -- Java クラスを問題なくインポートできることに注意してください。

エラーは次のとおりです (はい、これは Minecraft 用です)。

20:50:44 [SEVERE] org.bukkit.plugin.InvalidPluginException: Traceback (most recent call last):
  File "<iostream>", line 10, in <module>
ImportError: No module named PyDbLite

20:50:44 [SEVERE]   at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:280)
20:50:44 [SEVERE]   at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:113)
20:50:44 [SEVERE]   at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:83)
20:50:44 [SEVERE]   at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305)
20:50:44 [SEVERE]   at com.master.bukkit.python.PythonLoader.onLoad(PythonLoader.java:58)
20:50:44 [SEVERE]   at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:212)
20:50:44 [SEVERE]   at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183)
20:50:44 [SEVERE]   at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53)
20:50:44 [SEVERE]   at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156)
20:50:44 [SEVERE]   at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422)
20:50:44 [SEVERE]   at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
20:50:44 [SEVERE] Caused by: Traceback (most recent call last):
  File "<iostream>", line 10, in <module>
ImportError: No module named PyDbLite

20:50:44 [SEVERE]   at org.python.core.PyException.fillInStackTrace(PyException.java:70)
20:50:44 [SEVERE]   at java.lang.Throwable.<init>(Throwable.java:181)
20:50:44 [SEVERE]   at java.lang.Exception.<init>(Exception.java:29)
20:50:44 [SEVERE]   at java.lang.RuntimeException.<init>(RuntimeException.java:32)
20:50:44 [SEVERE]   at org.python.core.PyException.<init>(PyException.java:46)
20:50:44 [SEVERE]   at org.python.core.PyException.<init>(PyException.java:43)
20:50:44 [SEVERE]   at org.python.core.PyException.<init>(PyException.java:61)
20:50:44 [SEVERE]   at org.python.core.Py.ImportError(Py.java:290)
20:50:44 [SEVERE]   at org.python.core.imp.import_first(imp.java:750)
20:50:44 [SEVERE]   at org.python.core.imp.import_name(imp.java:834)
20:50:44 [SEVERE]   at org.python.core.imp.importName(imp.java:884)
20:50:44 [SEVERE]   at org.python.core.ImportFunction.__call__(__builtin__.java:1220)
20:50:44 [SEVERE]   at org.python.core.PyObject.__call__(PyObject.java:357)
20:50:44 [SEVERE]   at org.python.core.__builtin__.__import__(__builtin__.java:1173)
20:50:44 [SEVERE]   at org.python.core.imp.importOne(imp.java:903)
20:50:44 [SEVERE]   at org.python.pycode._pyx5.f$0(<iostream>:52)
20:50:44 [SEVERE]   at org.python.pycode._pyx5.call_function(<iostream>)
20:50:44 [SEVERE]   at org.python.core.PyTableCode.call(PyTableCode.java:165)
20:50:44 [SEVERE]   at org.python.core.PyCode.call(PyCode.java:18)
20:50:44 [SEVERE]   at org.python.core.Py.runCode(Py.java:1261)
20:50:44 [SEVERE]   at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:235)
20:50:44 [SEVERE]   at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:230)
20:50:44 [SEVERE]   at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlugin(PythonPluginLoader.java:239)
20:50:44 [SEVERE]   ... 10 more
4

3 に答える 3

4

jython は、純粋な python である場合、非標準の python モジュールをインポートできます。データベース接続は通常、cpython モジュールです。データベース接続については、zxJDBCを参照してください。 これにより、標準の python DBI 2.0 のような方法で Java が動作する jdbc 接続が利用可能になります。

両方の長所!

于 2012-04-26T20:35:51.417 に答える
3

jythonを使用しているので、mysqlコネクタ/ Jjarを使用してください。ダウンロードしてに追加しCLASSPATH、コードを実行するユーザーがjarのある場所への読み取り権限を持っていることを確認してください。

jarを入手したら、サンプルコードのドキュメントに従ってください。

于 2012-04-26T19:55:36.387 に答える
3

PyDbLite は表向きはピュア python であるため、jython にインポートする必要があります。Jython で setup.py を使用しようとしたことはありませんが、Jython に同梱されていないいくつかの純粋な python .py を Jython からインポートしました。通常のインポート機構を使用して、CPython 2.x、CPython 3.x、Pypy、および Jython で実行されるプロジェクトが 1 つあります。

頭に浮かぶ主な質問は、次のとおりです。PyDbLite は sys.path のディレクトリにありますか?

于 2012-04-26T20:40:10.980 に答える