Вопрос по python – Импорт нестандартного модуля Python в Jython

2

Быстрый вопрос ... Я использую Jython для выполнения некоторых задач, и мне нужно получить доступ к некоторым базам данных MySQL ... Я нашел MySQL Database Connector для Python2.5; он не поставляется с установкой jython / python (это третья сторона). Я поместил папку модуля в тот же каталог, что и мой main.py, но когда я запускаю его, он говорит мне, что не может найти модуль. Я делал это раньше в Python3.2 для импорта, и я думал, что это будет работать так же.

Can Jython import non-standard python modules? -- Note I can import Java classes just fine.

Вот ошибка (да, это для 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

Ваш Ответ

3   ответа
4

если они являются чистыми Python. соединения с базой данных обычно являются модулями cpython. Для связи с базой данных, см.zxJDBC  Это делает любые jdbc-соединения доступными для поведения java в стандартном виде Python DBI 2.0.

Лучшее из обоих миров!

3

MySQL соединитель / J баночка. Загрузите его, добавьте в свойCLASSPATHи убедитесь, что ваш пользователь, выполняющий код, имеет права на чтение в том месте, где находится jar.

Как только у вас есть банка, следуйтедокументация для примера кода.

Error: User Rate Limit Exceeded Clement
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Clement
3

поэтому он должен импортировать в Jython ОК. Я не пытался использовать setup.py с Jython, но я импортировал несколько чистых Python .py, которые не поставлялись с Jython, из Jython. У меня есть один проект, который работает на CPython 2.x, CPython 3.x, Pypy и Jython с использованием обычного механизма импорта.

Главный вопрос, который приходит на ум: есть ли PyDbLite в каталоге на вашем sys.path?

Error: User Rate Limit Exceeded Clement

Похожие вопросы