用Java调用.py程序出现ModuleNotFoundError: No module named 'java'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java调用.py程序出现ModuleNotFoundError: No module named 'java'相关的知识,希望对你有一定的参考价值。

import sysfrom java.awt import *from java.io import *from java.lang import *from java.nio import *from java.util import *from javax.swing import *from edu.mines.jtk.awt import *from edu.mines.jtk.dsp import *from edu.mines.jtk.interp import *from edu.mines.jtk.io import *from edu.mines.jtk.mosaic import *from edu.mines.jtk.ogl.Gl import *from edu.mines.jtk.sgl import *from edu.mines.jtk.util import *from edu.mines.jtk.util.ArrayMath import *from util import *from mef import *from he import *############################################################################## Run the function main on the Swing threadimport sysclass _RunMain(Runnable): def __init__(self,main): self.main = main def run(self): self.main(sys.argv)def run(main): SwingUtilities.invokeLater(_RunMain(main))

参考技术A 这个错误我以前遇到过,当时我是使用shell脚本包了一层,即通过shell脚本间接调用python脚本,当时我的问题就解决了追问

怎么通过shell脚本间接调用python脚本,是重新编一个程序来运行吗?我是不能导入“Java”包,会不会是配置路径的问题,可是我查看了路劲,应该也没问题

参考技术B 模块不存在错误追问

那应该怎么处理,可以详细说说吗?谢谢

追答

你的python带你是不是正确的,能执行

追问

在Python运行也是这个错误

调用自定义模块出现ModuleNotFoundError的问题

参考技术A Python会在以下路径中搜索它想要寻找的模块:

1,程序所在的文件夹

2,标准库的安装路径

3,操作系统环境变量PYTHONPATH所包含的路径

产生问题的原因可能是: IDE(我使用的是Pycharm)没有将当前目录添加到工作目录中,导致了在搜索的目录中找不到要调用的模块。

解决方法1:在调用自定义模块前先将程序所在的目录添加到工作目录中

例如 这里的preprocess.py是我们自定义的模块 ,已经将其放在同一目录下

解决方法2:在Pycharm中创建NewProject,将调用程序与被调用程序放在同一个Project中。

此时Pycharm会自动生成.idea和__pycache__两个文件夹,模块的调用应该和这个有关,然后在程序中直接调用自定义的模块就可以了。

红色划线部分是调用的python解析器的位置。可能在用pycharm调用的时候这些模块都是能正常使用的。但是,为什么到了vscode这儿就出问题了呢?

首先,让我们来看看现在有哪些模块,在命令行终端输入conda list。

可以看见torch模块确实已经安装了,不过请注意后面还有个pypi。pypi是指这个模块是通过pip安装的,而不是通过conda安装。所以模块无法调用的原因就在这儿。

解决方法比较简单粗暴,在选择python解析器的时候选择conda base版本的就OK了。在这个解析器下,即使是pip安装的模块也可以照常使用。

1、因为默认的路径不在根目录了,而以 当前运行的程序文件夹为根目录

2、如果在当前文件目录底下可以找到导入的包,那么可以直接使用from … import …

3、如果在当前文件目录底下找不到导入的包,则需要向sys.path添加包的所在的绝对位置。

最后补充一下我的问题是怎么解决的:

在了解了路径原理之后,仔细核对了出问题的路径之后,发现from … import …的时候,from目录不是从根目录开始的,修改之后修复bug

以上是关于用Java调用.py程序出现ModuleNotFoundError: No module named 'java'的主要内容,如果未能解决你的问题,请参考以下文章

调用自定义模块出现ModuleNotFoundError的问题

用cmd运行java程序,出现“找不到文件”提示

普通 java 工程调用 arcobject 功能,打包成独立可运行程序后,用脚本调用

运行py程序出现错误:未找到模块错误:没有名为'java'的模块

用java调用python脚本,单独的python脚本可以运行,但是在java里面调用的时候告知缺少模块。怎么破?

来自 Java Runnable 的 Py4J 回调