将python模块添加到pydev,Eclipse中的Java项目的sys.path中

时间:2013-08-14 23:12:26

标签: java eclipse import pydev sys.path

我一直在关注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发布版本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中的异常(最近一次调用最后一次):   文件“”,第1行,in ImportError:没有名为Building

的模块

更新

Per 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模块添加到pythonpath。谢谢@SimonC提示。

2 个答案:

答案 0 :(得分:4)

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

更新

如果要在运行时配置中指定路径,那么看起来您可以通过在命令行上指定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[] {""});

答案 1 :(得分:2)

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

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