导入模块错误:在java程序中使用jython调用python脚本

时间:2022-12-24 23:15:02

I am trying to execute a python file from netbeans using jython in a java program. My code is like this:

我试图在java程序中使用jython从netbeans执行python文件。我的代码是这样的:

PythonInterpreter.initialize(System.getProperties(), System.getProperties(), 
                             new String[0]);
PythonInterpreter interp = new PythonInterpreter();
interp.execfile("as1.py");

error is:

Traceback (most recent call last):
  File "as1.py", line 2, in <module>
    import datetime
ImportError: No module named datetime

and also interdependent python files also not importing those are in same directory.

以及相互依赖的python文件也没有导入它们在同一目录中。

like:

PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
PythonInterpreter interp = new PythonInterpreter();
interp.execfile("calen.py");

python files are:

python文件是:

calen.py:

from as1 import * 
print ( "I am printing" + str(Moh(1000).run()))

as1.py:

from time import time
import datetime
class Moh:
    def __init__(self, n):  
        self.n = n

    def run(self):
        data = [1,2,3,4,5]
        start = time()
        for i in range(self.n):
            data.append(i)
        end = time()
        return ( end - start )/self.n

if __name__ == "__main__":
    print ( "I am printing" + str(Moh(1000).run()))

error is:

Traceback (most recent call last):
  File "calen.py", line 1, in <module>
    from as1 import * 
ImportError: No module named as1

1 个解决方案

#1


2  

It is essential to set "python.path" for the PythonInterpreter so that it can load your the as1 module. To do that, you have to initialize PythonInterpreter in this way:

必须为PythonInterpreter设置“python.path”,以便它可以加载as1模块。为此,您必须以这种方式初始化PythonInterpreter:

Properties properties = System.getProperties();
properties.put("python.path", PATH_TO_PARENT_DIRECTORY_OF_AS1_PY);
PythonInterpreter.initialize(System.getProperties(), properties, new String[0]);
PythonInterpreter interp = new PythonInterpreter();
interp.execfile("calen.py");

#1


2  

It is essential to set "python.path" for the PythonInterpreter so that it can load your the as1 module. To do that, you have to initialize PythonInterpreter in this way:

必须为PythonInterpreter设置“python.path”,以便它可以加载as1模块。为此,您必须以这种方式初始化PythonInterpreter:

Properties properties = System.getProperties();
properties.put("python.path", PATH_TO_PARENT_DIRECTORY_OF_AS1_PY);
PythonInterpreter.initialize(System.getProperties(), properties, new String[0]);
PythonInterpreter interp = new PythonInterpreter();
interp.execfile("calen.py");