【问题标题】:jython can't find 3rd party python package (python installed using miniconda)jython 找不到第 3 方 python 包(使用 miniconda 安装的 python)
【发布时间】:2016-05-01 22:21:14
【问题描述】:

我有一个用 Python 编写的原型,我需要将其移植到 Java 中才能投入生产。 Python 2.7.10 已使用miniconda 安装。该原型使用我使用pip 安装的第 3 方库 nltk。

为了避免从头开始重写代码,至少在最初,我想首先尝试使用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 安装中的所有第 3 方包?我意识到其中一些可能无法在 jython 中运行,但至少我想访问那些运行的。

【问题讨论】:

  • 1.我很可能在 python 中生成生产代码 =) 2. 完全不知道你在做什么。你能说一下你写的这个原型是什么吗?目的是什么? myPrototype.py 中有什么内容?此外,并非所有类型和类对象都可以跨 jython 无缝工作。我的建议是让python做python的东西,让java做java的东西。使用输入/输出文件(JSON/XML/纯文本)或命令行界面连接它们。
  • @alvas 1. 不确定您的意思。我们开发了完全用 python 编写的生产质量系统。 2. 原型使用​​nltk 库进行一些文本处理。它具体做什么并不重要。问题是关于配置jython 以使其能够运行使用pip 添加到使用miniconda 的python 安装doe 的任何第三方包。或者至少是那些与jython兼容的包。
  • 我认为jython 无法处理您使用conda 拥有的所有库。一旦库依赖于numpy 或scipy,您很可能会遇到问题。如果您项目的主要语言是 Java,那么我认为最好的解决方案不是 jython,而是像 REST i/o 管道或 JSON/XML 等数据传输标准。

标签: python nltk jython miniconda


【解决方案1】:

大部分 NLTK 是 Python 代码,因此您应该能够从 Jython 使用它,只要它位于您的模块搜索路径中。如果您使用的是 unix,只需将站点包中的 nltk 链接添加到当前文件夹即可。或者查看这里的文档:http://www.jython.org/jythonbook/en/1.0/ModulesPackages.html NLTK 需要能够为某些东西加载其数据。您可能希望将您的 nltk_data 从您的家链接到当前文件夹,或者查看此答案以从代码中设置它:How to config nltk data directory from code?

【讨论】:

  • NLTK 在调用使用numpy 的函数时可能会中断jython。我通过艰难的方式了解到这一点,并尝试了数小时的破解,然后放弃并最终使用 CLI 技巧。
  • 完全同意@alvas,但不知道脚本实际上在做什么,无法判断。 NLTK 的安装说明指出 numpy 是可选的,我使用了大部分没有 numpy。
猜你喜欢
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2021-09-03
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
相关资源
最近更新 更多