如何在 jep 中使用其他 python 模块?

Posted

技术标签:

【中文标题】如何在 jep 中使用其他 python 模块?【英文标题】:How to use other python modules with jep? 【发布时间】:2020-08-12 20:33:22 【问题描述】:

我在 IntelliJ-IDEA 中设置了一个 jep 项目,并且在运行我的代码时不断收到此错误:

Exception in thread "main" jep.JepException: <class 'ModuleNotFoundError'>: No module named 'spacy'
at src/main/python\nlq_wrapper.<module>(nlq_wrapper.py:2)
at <string>.<module>(<string>:1)
at jep.Jep.exec(Native Method)
at jep.Jep.exec(Jep.java:478)
at com.siemens.nlqwrapper.NLQWrapper.load(NLQWrapper.java:37)
at com.siemens.nlqwrapper.Main.main(Main.java:9)

即使 spacy 包含在我的解释器 SDK 包中。

另一个奇怪的事情是 IntelliJ-IDEA 中的 Python 终端可以找到并使用 spacy。

但是当我尝试从终端或系统的 CLI 运行程序时,它找不到模块并且我得到同样的错误。

我需要为 jep 做一些额外的配置才能使用其他 python 模块吗?还是 jep 与其他模块不兼容?

编辑 为了进一步说明,这里是 Java 和 Python 的运行配置。 Java运行配置: Python运行配置:

【问题讨论】:

能否添加您使用的运行配置的屏幕截图(运行|编辑配置...)? @SergeyK。感谢您的澄清;我已经更新了我的问题以包括我的运行配置。我还应该添加我的项目结构吗? 尝试从系统 CLI 运行它并激活相同的 venv。结果如何? @SergeyK。我已经这样做了,结果是一样的。 【参考方案1】:

我通过您在 JEP 解释器之前调用的这段代码修复了它:

 PyConfig pyConfig = new PyConfig();
  pyConfig.setPythonHome("/home/user/[NEW_PYTHON_HOME]/");
  try 
    MainInterpreter.setInitParams(pyConfig);
   catch (JepException e) 
       e.printStackTrace();
  

阿里

【讨论】:

以上是关于如何在 jep 中使用其他 python 模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作 python 模块或函数并在编写其他程序时使用它?

如何在其他类/模块中正确导入/使用我在 Python 中构建的类和模块? [复制]

在 python sqlite3 模块中导入数据文件(如 .csv)的任何其他方式? 【不一一插入】

Python之模块篇

如何在python子进程模块中执行用户输入(如日期)作为命令[重复]

JDK18已经发布9大特性之JEP 400默认为UTF-8