[英]Jython and python modules
我刚开始在我的Java类中使用PythonInterpreter
,它工作得很好! 但是,如果我尝试包含python模块( re
, HTMLParser
等),我收到以下异常(对于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.