Python 运行 在 Java ProcessBuilder 下无法找到 pandas 导入
Python Running under Java ProcessBuilder cannot not find pandas import
我是 运行 python 在 Java 中使用 ProcessBuilder 的进程。现在它是一个简单的测试程序,它打印出一个 before 语句而不是 imports pandas as pd 然后打印出另一个语句。结束时出现错误
导入 pandas 作为 pd
导入错误:没有名为 pandas
的模块
Pandas 已安装。 Java 和 ProcessBuilder 就是找不到它们。
def main():
print("hello world before")
import pandas as pd
df = pd.DataFrame()
print("after the dataframe")
main()
public class runPythonTest {
public static void main(String[] args) {
try{
ArrayList<String> list = new ArrayList<>();
list.add("python");
list.add("/Users/loisgh/PycharmProjects/pythontest/python_test.py");
ProcessBuilder pb = new ProcessBuilder(list);
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader readerError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = null;
while ( (line = reader.readLine()) != null) {
System.out.println(line);
}
while ( (line = readerError.readLine()) != null) {
System.out.println(line);
}
}catch(Exception e){System.out.println(e);}
}
}
有人能告诉我如何解决这个问题并将 pandas 的位置显示给 java。
当您使用 ProcessBuilder
时,它不会考虑您的 PATH
环境变量,这会中断导入。要解决此问题,您必须提供 ProcessBuilder
的完整路径,因此请更改:
list.add("python");
到 python 可执行文件所在的完整路径。如果您使用 linux,请尝试使用 which python
找到它,如果您使用 Windows,请尝试使用 where python
找到它。你应该以这样的方式结束:
list.add("users/path/2.7/python");
此外,如果您安装了 Python 的多个版本(例如 2.7 和 3.7),请确保您指的是正确的版本,或者两者都安装了该模块。
我是 运行 python 在 Java 中使用 ProcessBuilder 的进程。现在它是一个简单的测试程序,它打印出一个 before 语句而不是 imports pandas as pd 然后打印出另一个语句。结束时出现错误
导入 pandas 作为 pd 导入错误:没有名为 pandas
的模块Pandas 已安装。 Java 和 ProcessBuilder 就是找不到它们。
def main():
print("hello world before")
import pandas as pd
df = pd.DataFrame()
print("after the dataframe")
main()
public class runPythonTest {
public static void main(String[] args) {
try{
ArrayList<String> list = new ArrayList<>();
list.add("python");
list.add("/Users/loisgh/PycharmProjects/pythontest/python_test.py");
ProcessBuilder pb = new ProcessBuilder(list);
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader readerError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = null;
while ( (line = reader.readLine()) != null) {
System.out.println(line);
}
while ( (line = readerError.readLine()) != null) {
System.out.println(line);
}
}catch(Exception e){System.out.println(e);}
}
}
有人能告诉我如何解决这个问题并将 pandas 的位置显示给 java。
当您使用 ProcessBuilder
时,它不会考虑您的 PATH
环境变量,这会中断导入。要解决此问题,您必须提供 ProcessBuilder
的完整路径,因此请更改:
list.add("python");
到 python 可执行文件所在的完整路径。如果您使用 linux,请尝试使用 which python
找到它,如果您使用 Windows,请尝试使用 where python
找到它。你应该以这样的方式结束:
list.add("users/path/2.7/python");
此外,如果您安装了 Python 的多个版本(例如 2.7 和 3.7),请确保您指的是正确的版本,或者两者都安装了该模块。