导入Jython的非标准Python模块(Import non-standard python mo

2019-06-25 08:03发布

一个快速的问题......我用Jython做了一些工作,我需要访问一些MySQL数据库...我发现了一个的python2.5的MySQL数据库连接器; 它不与Jython的/ Python安装(这是第三方)。 我已经放在模块的文件夹,在同一目录作为我的main.py,但是当我启动它,它告诉我,它无法找到该模块。 我在Python3.2以前做过的进口,我认为它会工作相同。

Jython会导入非标准的模块? -注意:我可以导入Java类就好了。

以下是错误(是的,这是我的世界):

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

Answer 1:

由于您使用的Jython,使用MySQL的连接器/ J罐子。 下载它,把它添加到您的CLASSPATH ,并确保你的用户执行的代码具有读取权限到罐子的位置。

一旦你的罐子,请按照文档的示例代码。



Answer 2:

Jython会导入非标准的模块,如果他们是纯粹的蟒蛇。 数据库连接通常CPython的模块。 对于数据库连接,见zxJDBC它使可用于Java的行为的任何JDBC连接的标准Python DBI2.0种方式。

两全其美!



Answer 3:

PyDbLite表面上是纯Python,所以它应该导入的Jython确定。 我还没有尝试使用一个setup.py使用Jython,但我已经导入几个纯Python的.py的未使用Jython出货,从Jython的。 我有一个在CPython的2.X,3.X CPython的,Pypy和Jython使用常用的进口机器运行一个项目。

我想到的是主要的问题:是PyDbLite在您的sys.path的目录?



文章来源: Import non-standard python module in Jython