我在Eclipse中组合java和python代码,当我想执行包含从java类调用的pandas模块的python脚本时,我得到(in-package swank)
(setq swank-debugger-hook-orig #'swank-debugger-hook)
(defun swank-debugger-hook (condition hook)
(etypecase condition
(sb-int:simple-stream-error
(progn
(princ "*** Stream error" *error-output*)
(abort)))
(t (funcall swank-debugger-hook-orig condition hook))))
(in-package cl-user)
(swank:create-server :port 4008 :dont-close t)
值。否则,如果我不使用pandas模块,但只是简单的python脚本一切正常。我正确地假设null
解释器并且正确配置了所有python模块的路径,因为我没有得到任何导入错误,当我在代码中覆盖鼠标时,我可以得到模块信息。
所有模块都在/usr/local/lib/python2.7/site-packages中。
请检查PyDev
,java class
和python script
配置:
PyDev
的Python:
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);}
}
}
这些是带有和不带pandas模块的输出:
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模块运行代码时可能出现什么问题?
谢谢!
答案 0 :(得分:0)
我可能会调查一些对我不合适的事情:
PYTHONPATH你设置的是你不应该在你的脚本中做的事情,而是从外面设置PYTHONPATH(或者在PyDev中,让它为你管理它) - 另外,没有理由将report1.csv放在PYTHONPATH中(即:不要把东西放在sys.path中)。
pd.read_csv(" report1.csv",sep =",",header = None):使用report1.csv的完整路径。
为您的代码创建一个单独的项目 - 不要将其放入/usr/local/bin/python2.7。
尽管如此,我还不确定是什么问题,但我的建议是首先让它在纯Python中工作(所以,使用pydev调试器运行你的python代码并调试什么'错了)只有在考虑将其集成到java / jython之后(确保您已阅读入门手册http://www.pydev.org/manual_101_root.html以正确设置以在调试器中运行)。
答案 1 :(得分:0)
我找到了解决这个问题的方法。最有效的方法是在没有PyDev和PYTHONPATH设置的情况下使用ProcessBuilder。必要的修改是在ProcessBuilder中添加第一个参数作为python安装的完整路径,在我的例子中,这是在 /usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/ bin / python2.7 ,第二个参数是主python脚本的完整路径。
第二个修改是将python脚本放在Eclipse工作空间之外,并将完整路径作为ProcessBuilder中的第二个参数传递给主python脚本。我假设PyDev在读取用C编写的库时遇到了问题,例如numpy。
答案 2 :(得分:0)
您也可以尝试以下步骤。我从blog得到了这个,这对我很有帮助。但是步骤是......
首先下载并安装Anaconda 2.x,然后按照以下内容
解决这个问题的唯一办法就是完全删除(window-> preferences-> pydev-> interpreter python-> remove),然后再使用Auto Config添加它。
如果您没有安装某个软件包,则只需在控制台中运行此命令即可
conda install <package_name>
它将被下载并立即生效。