当前位置:  开发笔记 > 编程语言 > 正文

Jython和python模块

如何解决《Jython和python模块》经验,为你挑选了2个好方法。

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

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

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



1> Blauohr..:

你嵌入了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,例如



2> Michael Myer..:

根据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中的纯python模块.您不能使用在C. re中实现的模块,而HTMLParser随jython一起提供.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有