in thread "main" ImportError: Cannot import site module and its dependencies: No module named site

1.问题:提示不能够导入site module

一般在Java中调用Python,执行代码流程如下:

Properties props = new Properties();
props.put("python.home", "F:\\spring-app\\src\\main\\webapp\\WEB-INF\\lib");
props.put("python.console.encoding", "UTF-8");        
        props.put("python.security.respectJavaAccessibility", "false");        
props.put("python.import.site", "false");

Properties preprops = System.getProperties();
PythonInterpreter.initialize(preprops, props, new String[0]);
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("F:\\spring-app\\src\\main\\webapp\\WEB-INF\\lib\\main.py");
PyFunction  func = (PyFunction) interpreter.get("function_name", PyFunction.class );
PyObject pyobj = func.__call__();

只要在代码中添加:props.put(“python.import.site”, “false”);即可处理上面的错误。

2.本人还遇到一种情况,添加props.put(“python.import.site”, “false”);之后仍然报错

这种情况代码如下:

PySystemState sys = Py.getSystemState();     
sys.path.add("F:\\spring-app\\src\\main\\webapp\\WEB-INF\\lib"); 

Properties props = new Properties();
props.put("python.home", "F:\\spring-app\\src\\main\\webapp\\WEB-INF\\lib");
props.put("python.console.encoding", "UTF-8");        
props.put("python.security.respectJavaAccessibility", "false");        
props.put("python.import.site", "false");

Properties preprops = System.getProperties();
PythonInterpreter.initialize(preprops, props, new String[0]);
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("F:\\spring-app\\src\\main\\webapp\\WEB-INF\\lib\\main.py");
PyFunction  func = (PyFunction) interpreter.get("function_name", PyFunction.class );
PyObject pyobj = func.__call__();

可以看出只是多了两行代码:

PySystemState sys = Py.getSystemState();     
sys.path.add("F:\\spring-app\\src\\main\\webapp\\WEB-INF\\lib"); 

代码主要是将上面路径加入path中,这样可以在Python代码中import 自己的Python 文件。加上上面代码错误再次出现,但如果将上面两行代码放在,props.put(“python.import.site”, “false”); 之后,错误消除。

测试发现只要执行Py.getSystemState(); 再执行props.put(“python.import.site”, “false”); 便不起作用,其中问题还望各位大牛指点一二!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值