如何在 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)的任何其他方式? 【不一一插入】