Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jython和python模块_Java_Python_Interop_Jython - Fatal编程技术网

Java Jython和python模块

Java Jython和python模块,java,python,interop,jython,Java,Python,Interop,Jython,我刚刚开始在Java类中使用PythonInterpreter,它工作得非常好!但是,如果我尝试包含python模块(re,HTMLParser,等等),我会收到以下异常(对于re): 线程“main”回溯中的异常(最里面的最后一个): 文件“”,第1行,是否在中? ImportError:没有名为re的模块 如何使jython jar中的类“看到”python提供的模块?根据: 4.1支持Python库的哪些部分? 好消息是Jython现在支持大部分标准Python库。坏消息是,这项工作进展如

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

线程“main”回溯中的异常(最里面的最后一个): 文件“”,第1行,是否在中? ImportError:没有名为re的模块 如何使jython jar中的类“看到”python提供的模块?

根据:

4.1支持Python库的哪些部分? 好消息是Jython现在支持大部分标准Python库。坏消息是,这项工作进展如此之快,很难使文档保持最新

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

如果您想使用标准Python模块,只需尝试导入它。如果这样行的话,你可能已经准备好了。您还可以对模块执行dir()操作,以检查它实现的函数列表

如果您真正需要的标准Python模块还不能与Jython一起使用,请发送邮件给我们


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

检查Jython sys.path。确保要加载的库位于此路径中。
查看了解更多详细信息。

您嵌入了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指向标准jython库所在的位置


查看Jython源代码中的src/org/python/util/PyServlet.java,例如

您可以在这里参考解决方案

从这里下载
ez_setup.py

然后运行
jython ez_setup.py

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


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

您可以使用jython的纯python模块。您不能使用用C实现的模块。re和HTMLPasser是与jython一起交付的。啊,那我错了。将此答案留作参考。@Michael您应该编辑最后一句话,这是误导性的。@smci修复了误导性的句子。
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));
    }