我一直在关注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提示。
答案 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项目,它最后会有一个部分。)