繁体   English   中英

Jython和python模块

[英]Jython and python modules

我刚开始在我的Java类中使用PythonInterpreter ,它工作得很好! 但是,如果我尝试包含python模块( reHTMLParser等),我收到以下异常(对于re ):

Exception in thread "main" Traceback (innermost last):
  File "", line 1, in ?
ImportError: no module named re

我怎样才能让jython jar中的类“看到”python可用的模块?

你嵌入了jython,你会使用一些Python模块:

如果要在Java代码中设置路径(sys.path):

public void init() {
        interp = new PythonInterpreter(null, new PySystemState());

        PySystemState sys = Py.getSystemState();
        sys.path.append(new PyString(rootPath));
        sys.path.append(new PyString(modulesDir));
    }

Py在org.python.core中。

rootPath和modulesDir是你想要的!

让rootPath指向您找到standard-jython-lib的位置

看一下Jython-Source-Code中的src / org / python / util / PyServlet.java,例如

根据FAQ

4.1支持Python库的哪些部分?

好消息是Jython现在支持大多数标准Python库。 坏消息是,这已经发生了如此迅速的变化,很难保持文档的最新状态。

内置模块(例如用C语言编写的CPython模块)是另一回事。 这些必须移植到Java,或者用JNI桥实现,以供Jython使用。 一些内置模块已移植到JPython,最着名的是cStringIO,cPickle,struct和binascii。 JNI模块不太可能包含在Jython中。

如果您想使用标准Python模块,只需尝试导入它。 如果有效,你可能都已经完成了。 您还可以在模块上执行dir()以检查它实现的函数列表。

如果有一些您真正需要的标准Python模块尚未与Jython一起使用,请发送邮件给我们。

换句话说,您可以直接使用Jython中的Python模块,除非您尝试使用内置模块,在这种情况下,您将无法使用已移植到Jython的任何内容。

检查你的jython sys.path。 确保要加载的库位于此路径中。 查看jython faq以获取更多详细信息。

您可以在这里参考解决方案在jython中导入python模块

http://peak.telecommunity.com/dist/ez_setup.py下载ez_setup.py

然后运行jython ez_setup.py <any module name>

在任何文件夹路径上运行都无关紧要。

我可以用它安装pymysql,没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM