簡體   English   中英

如何使用Pydev / Eclipse在Python和Java項目之間共享通用的Python / Jython代碼?

[英]How do I share common Python/Jython code between a Python and Java project with Pydev/Eclipse?

我正在使用嵌入在Java項目中的Jython腳本,該Java項目是在Eclipse中開發的,安裝了Pydev。 現在,我想在另一個純Python項目中重用此腳本。 有沒有一種方法可以干凈地做到這一點而無需復制腳本?

當前,我有一個Java項目,其中包含目錄src/ (包含Java源代碼)和src-py/ (包含Jython源代碼),並添加了Pydev'facet'。 Java代碼使用以下代碼調用Jython代碼:

// evaluate the Jython class
PythonInterpreter interpreter = new PythonInterpreter();
InputStream resourceAsStream = MyEclipsePlugin.getResource("/src-py/MyJythonCode.py");
interpreter.execfile(resourceAsStream);

// create an instance of the Jython class and retrieve a Java interface reference to it
interpreter.exec("x = MyJythonClass()");   // MyJythonClass implements MyJavaInterface
Object x = interpreter.get("x").__tojava__(MyJavaInterface.class);
return (MyJavaInterface) x;

這有效,但是顯然很丑陋。 從我閱讀的內容來看,曾經有一個“ jythonc”(可能更接近於我所需要的),但是它似乎已被棄用,並且不鼓勵您使用它。 否則,我需要在運行時使用實際的Jython源代碼將其編譯為JVM類。 因此,不幸的是,上述模式似乎不支持加載模塊,因此我目前正在單個.py文件中處理所有內容。 我想我最終可能會多次執行interpreter.execfile() ,但是當模塊之間存在相互依賴關系時,我還沒有真正弄清楚該怎么做。

接下來,我嘗試創建一個新的Jython項目以將MyJythonCode.py移入其中。 不幸的是,我無法將Pydev / Jython項目添加為對Java項目的項目引用,因此我不確定如何將其集成到Java項目中。

我目前看到的選項,我都不喜歡:

  • 復制MyJythonCode.py並同時修改它們。
  • 做一些時髦的svn:externals東西,這些東西在每次更新時都會幫我復制。
  • 嘗試找到一個預構建/自定義構建步驟插件,以供Eclipse復制。

有人有更好的主意嗎?

我認為應該為這兩個都依賴的內容創建一個單獨的項目...

即:

將項目創建為Java項目,然后向其添加pydev屬性(即:右鍵單擊項目> pydev>設置為pydev項目)。

然后,在該項目中,您可以創建java-wrapper類,還可以配置pydev的源路徑(並將該項目添加為其他項目的引用:右鍵單擊其他項目>屬性>項目引用)。

這樣一來,對於Java / Python來說一切都應該正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM