java利用Jython调用python抛出错误ImportError: No module named odbchelper

goto_217 2014-03-20 09:20:50
Python代码:
import odbchelper

def add(x, y):
"""
add method
"""
return x+y

def sub(x, y):
"""
subtraction method
"""
return x-y

def invokeOdbchelper():
"""
invoking odbchelper.py buildConnectingString()
"""
myParams = {"server":"mpilgrim", \
"database":"master", \
"uid":"sa", \
"pwd":"secret"
}
return odbchelper.buildConnectionString(myParams)

if __name__ == "__main__":

print(add(10, 20))
print(sub(20, 19))
print(invokeOdbchelper())

java代码:
import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

public class FirstJavaScript
{
public static void main(String args[])
{

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("E:\\_Python\\diveintopythonzh-cn-5.4b\\py_test\\pythonTest.py");
PyFunction func = (PyFunction)interpreter.get("add",PyFunction.class);

int a = 2010, b = 2 ;
PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
System.out.println("anwser = " + pyobj.toString());


}//main
}

运行后抛出错误:

Exception in thread "main" Traceback (most recent call last):
File "E:\_Python\diveintopythonzh-cn-5.4b\py_test\pythonTest.py", line 4, in <module>
import odbchelper
ImportError: No module named odbchelper

求解答!!!!! 为什么会抛出如此错误,单独运行Python是正常的。。
...全文
1459 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Ehcoing 2016-08-05
引用 1 楼 rui888 的回复:
Process proc = Runtime.getRuntime().exec("python E:\_Python\diveintopythonzh-cn-5.4b\py_test\pythonTest.py"); proc.waitFor();
用这个proc怎么调用python里的add方法呢
回复
我想当好人 2016-07-26
楼主最后的解决方法 在我这里也没有用呢
回复
jethuang007 2014-09-03
用你的方法试了,还是没反应,错误提示:File<String>,line 1,in <module> ImportError:No module named psycopg2
回复
goto_217 2014-03-20
问题已经解决,,python中导入的库需要在java中提前导入一下,具体代码如下: import org.python.core.Py; import org.python.core.PyFunction; import org.python.core.PyInteger; import org.python.core.PyObject; import org.python.core.PySystemState; import org.python.util.PythonInterpreter; public class FirstJavaScript { public static void main(String args[]) { PythonInterpreter interpreter = new PythonInterpreter(); //‘odbchelper’是自定义的python库,在 Python 方法中我们需要用到这个库中的方法,所以需要提前导入进来 PySystemState sys = Py.getSystemState(); sys.path.add("E:\\_Python\\diveintopythonzh-cn-5.4b\\py"); interpreter.exec("import odbchelper"); interpreter .execfile("E:\\_Python\\diveintopythonzh-cn-5.4b\\py_test\\pythonTest.py"); PyFunction func = (PyFunction) interpreter.get("add", PyFunction.class); int a = 2010, b = 2; PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b)); System.out.println("anwser = " + pyobj.toString()); }// main }
回复
兔子托尼啊 2014-03-20
Process proc = Runtime.getRuntime().exec("python E:\_Python\diveintopythonzh-cn-5.4b\py_test\pythonTest.py"); proc.waitFor();
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2014-03-20 09:20
社区公告
暂无公告