从 java 代码运行时,Python 脚本找不到依赖项

Posted

技术标签:

【中文标题】从 java 代码运行时,Python 脚本找不到依赖项【英文标题】:Python script can't find dependencies when running from java code 【发布时间】:2020-10-10 18:30:46 【问题描述】:

我的服务器正在使用 python 脚本启动进程,当它运行时出现错误:

    Traceback (most recent call last):
  File "save_boxes.py", line 2, in <module>
    import cv2
ImportError: No module named cv2

事实上我已经安装了opencv2,并且当我从终端运行它时脚本正在运行,不知道如何修复它,感谢任何建议,谢谢!

我运行脚本的代码是:

 Process process;
            try 
                final char dm = (char) 34;
                ProcessBuilder pb = new ProcessBuilder("./runC.sh", "myArg1", "myArg2");
                Map<String, String> env = pb.environment();
                env.put("VAR1", "myValue");
                env.remove("OTHERVAR");
                env.put("VAR2", env.get("VAR1") + "suffix");
                pb.directory(new File("/home/user/IdeaProjects/MyServer/"));
                process = pb.start();
        
                int exitCode = process.waitFor();
                if (exitCode != 0) 
                    throw new IOException("Command exited with " + exitCode);
                
             catch (Exception e) System.out.println ("error message: " + e.getLocalizedMessage());

脚本代码:

#!/bin/bash

python my_script.py

【问题讨论】:

您确定python 命令指向python 3 或您使用的任何版本吗?通常,命令python 指向python 2,因此您可能必须使用python3 命令来运行python 3 解释器。 当我从终端“python”命令运行时运行正常,但我尝试在脚本中将 python 更改为 python3 并且它有效,非常感谢,你可以写一个答案,我会接受它 你能显示“which python”从终端运行并从脚本运行的输出吗?当它不是相同的输出时,您正在运行不同的版本。 【参考方案1】:

尝试使用python3。在大多数系统上,python 是指向 Python 2 解释器的链接。 :)

【讨论】:

以上是关于从 java 代码运行时,Python 脚本找不到依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Python RPi - 从另一个脚本运行脚本时找不到文件

从 groovy 脚本运行 gsutil:找不到 Python 可执行文件

运行Python脚本时找不到vcvarsall.bat

gnome 终端:找不到目录(在另一个终端中运行 python 脚本)

通过桌面图标运行 bash 脚本时找不到节点命令

Windows 命令找不到脚本