【发布时间】:2016-04-04 09:01:02
【问题描述】:
我在 Eclipse 中结合了 java 和 python 代码,当我想执行包含从 java 类调用的 pandas 模块的 python 脚本时,我得到 null 值。否则,如果我不使用 pandas 模块,而只是使用简单的 python 脚本,一切正常。我假设 PyDev 解释器正确,并且所有 python 模块的路径都配置正确,因为我没有收到任何导入错误,并且当我在代码中将鼠标悬停在它上面时,我可以获得模块信息。
所有模块都在 /usr/local/lib/python2.7/site-packages 中。
请检查java class、python script和PyDev的配置:
package test4;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
public class test4 {
public static void main(String a[]){
try{
ProcessBuilder pb = new ProcessBuilder("/usr/local/bin/python2.7","solinor_final.py");
Process p = pb.start();
System.out.println("Hello");
String line = null;
StringBuilder sb = new StringBuilder();
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line=in.readLine())!=null) {
sb.append(line);
System.out.println(line);
}
} finally {
in.close();
}
System.out.println("value is : "+sb);
}catch(Exception e){System.out.println(e);}
}
}
Python:
import sys
sys.path.append("/usr/local/bin")
sys.path.append("/usr/bin/")
sys.path.append('/Users/quuppa/Documents/workspace/test4/report1.csv')
import pandas as pd
def main():
import python_class as so
print "Hello inside"
data = pd.read_csv("report1.csv",sep=",",header=None)
data = data.rename(columns={0:'Merchant name',1:'Business ID',2:'Main merchant ID',3:'Report type',4:'Report search date',5:'Report period',\
6:'Outlet name',7:'Address',8:'Number of transactions',9:'Value of transactions',10:'Commission',11:'Chargebacks and adjustments',12:'Settlement value'})
data = data.drop([data.index[0]])
bd = so.Solinor(data)
total_amount = bd.totalAmount()
print total_amount
if __name__ == "__main__":
main()
这些是包含和不包含 pandas 模块的输出:
Hello
value is :
Hello
Hello inside
value is : Hello inside
配置图:
您对使用 pandas 模块运行代码有什么问题有什么建议吗?
谢谢!
【问题讨论】:
标签: java eclipse python-2.7 pydev