3

我一直在关注 Jython 书,以便能够让 Java 应用程序导入 Python 模块。

http://www.jython.org/jythonbook/en/1.0/JythonAndJavaIntegration.html#one-to-one-jython-object-factories特别指出“为了使用这种技术来利用 Jython 模块,您必须确保.py 模块包含在您的 sys.path 中,或者在您的 Java 代码中硬编码模块的路径”

如何确保将 .py 模块添加到 Eclipse 中 pydev 的 sys.path 中?我正在使用 Eclipse Kepler 版本 Build id:20130614-0229,Pydev 版本 2.8.1 和 JDK 6。

每当我尝试导入 Python 模块时,我都会不断收到导入错误。

从 Java 类打印 sys.path 如下代码片段告诉我 sys.path 由 ['C:\jython2.5.3\Lib', ' classpath ', ' pyclasspath /'] 组成。

如何在项目属性(或 Pydev 开发环境中的任何位置)中设置此 sys.path?

我不想在 Java 代码中修改 sys.path?

public BuildingFactory() {
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.exec("import sys");
    interpreter.exec("import sys.path");
    interpreter.exec("print sys.path");
    interpreter.exec("from Building import Building");
    buildingClass = interpreter.get("Building");
    }

['C:\jython2.5.3\Lib', ' classpath ', ' pyclasspath /'] 线程“main” Traceback 中的异常(最后一次调用):ImportError 中的文件“”,第 1 行:没有名为 Building 的模块

更新

根据http://wiki.python.org/jython/JythonFaq/InstallingJython#What_do_.22python.path.22_and_.22python.prepath.22_mean_in_the_Jython_registry.3F,在 Jython 注册表文件中修改了 python.path 以将 Python 模块添加到蟒蛇路径。谢谢@SimonC 的提示。

4

2 回答 2

4

花了几秒钟查看文档(所以我不知道这是否真的有效),看起来您可以使用将PySystemState传递给PythonInterpreter构造函数。PySystemState有一个公共路径字段(我假设)您可以将路径条目附加到该字段。

更新

由于您想在运行时配置中指定路径,因此您可以通过python.path在命令行上指定系统属性来执行此操作(来自Jython FAQ):

Properties props = new Properties();
// set in the VM args in the Eclipse runtime configuration instead
// props.setProperty("python.path", "/home/modules:scripts");
PythonInterpreter.initialize(System.getProperties(), props,
                             new String[] {""});
于 2013-08-15T00:11:14.517 回答
2

对于 PyDev/Eclipse,您应该将您的文件夹标记为源文件夹(源文件夹是项目中将添加到 PYTHONPATH 的文件夹)。

有关详细信息,请参阅http://pydev.org/manual_101_project_conf2.html(如果您想从 jython 中指向 java 项目,它最后有一个部分)。

于 2013-08-15T16:35:25.600 回答