2016-01-25 90 views
0

我有一個用Python編寫的原型,需要導入到Java中才能投入生產。 Python 2.7.10已經使用miniconda安裝。原型使用第三方庫nltk,我使用pip安裝。jython找不到第三方python軟件包(使用miniconda安裝python)

要想從頭開始重寫代碼,至少在開始時,我想先嚐試使用jython直接從Java調用原型代碼。

當我嘗試執行像

java -jar jython-standalone-2.7.0.jar myPrototype.py 

命令我得到

Traceback (most recent call last): 
    File "myPrototype.py", line 4, in <module> 
     from nltk import AlignedSent 
ImportError: No module named nltk 

當我運行python myPrototype.py它工作正常。

有沒有辦法配置我的jython安裝,以便它可以找到我已經添加到我的python安裝的所有第三方包?我意識到其中的一些可能不會在jython中運行,但至少我想訪問那些做的。

+0

1.我很可能在python =)2中生成產品代碼。完全沒有線索你在做什麼。你能否說明你寫的原型是什麼?什麼目的? 'myPrototype.py'中有什麼?並非所有類型和類對象都可以在jython中無縫地工作。我的建議是讓python做python的東西,讓java做java的東西。使用輸入/輸出文件(JSON/XML /明文)或命令行界面來連接它們。 – alvas

+0

@alvas 1.不確定你的意思。我們已經開發完全用python編寫的產品質量系統。 2.原型使用'nltk'庫進行文本處理。它具體做什麼並不重要。問題是關於配置'jython'使它能夠運行任何使用'pip'添加到'python' install doe的使用'miniconda'的任何第三方軟件包。或者至少那些與'jython'兼容的軟件包。 –

+0

我不認爲'jython'能夠處理所有使用'conda'的庫。一旦圖書館依賴'numpy'或'scipy',你很可能會遇到問題。如果您的項目的主要語言是Java,那麼我認爲最好的解決方案不是'jython',而是像REST I/O管道或像JSON/XML這樣的數據傳輸標準。 – alvas

回答

0

NLTK的大部分是Python代碼,所以只要它位於模塊搜索路徑中,您就可以從Jython使用它。如果您使用的是unix,只需將站點包中的nltk鏈接添加到當前文件夾即可。或者查看這裏的文檔:http://www.jython.org/jythonbook/en/1.0/ModulesPackages.html NLTK需要能夠加載其數據的某些東西。你可能想要從您的家到當前文件夾或者看到這個答案,從代碼設置它的al鏈接到您的nltk_data:How to config nltk data directory from code?

+0

當調用使用'numpy'的函數時,NLTK可能會在'jython'中破解。我瞭解到這種困難的方式,並試圖在放棄和結束CLI技巧之前花費大量時間對它進行攻擊。 – alvas

+0

完全同意@alvas,但不知道腳本實際上在做什麼,因此無法分辨。 NLTK的安裝程序聲明numpy是可選的,我用它的大部分沒有numpy。 –

相關問題