gpt4 book ai didi

java - 如何检查 Jython ScriptEngine 查找 python 模块的类路径?

转载 作者:行者123 更新时间:2023-11-30 03:12:35 25 4
gpt4 key购买 nike

我有这个Java我用来运行 python script 的代码使用Jython ScriptEngine :

StringWriter writer = new StringWriter();
ScriptEngineManager manager = new ScriptEngineManager();
ScriptContext context = new SimpleScriptContext();

context.setWriter(writer);
ScriptEngine engine = manager.getEngineByName("python");
engine.eval(new FileReader("/Users/folder1/test.py"), context);

在我的python script有几个模块导入语句,当我运行 Java 时代码我收到错误为 javax.script.ScriptException: ImportError: No module named psycopg2 。所有模块都安装在我的机器中,当我运行 python script 时通常通过 CLI 执行。所以我的理解是Jython classpath正在其他地方寻找 python模块。

我如何检查Jython在哪里ScriptEngine查找模块,然后修改它,包括我的 python 的实际位置模块存在吗?我对此很陌生,所以请原谅任何缺乏理解的地方。

注意:我有CentOSpython 2.7.5安装在我的机器上

最佳答案

sys.path是指定 Jython(和 Python)搜索模块的位置的字符串列表。您可以像这样检查它的值:

engine.eval("import sys; print sys.path");

要将目录添加到 sys.path,请使用 JYTHONPATH环境变量。如果yourmodule安装在/path/to/modules/yourmodule中,它看起来像这样:

export JYTHONPATH=/path/to/modules

另一种方法是使用 python.path属性。

<小时/>

不幸的是,在psycopg2的情况下上面的内容没有帮助,因为该包是 C 扩展,因此仅与 CPython 兼容。也许您可以使用 Ctypes 的 Psycopg 端口来代替。

关于java - 如何检查 Jython ScriptEngine 查找 python 模块的类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33309860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com