在Eclipse Mars中使用python pandas模块

时间:2015-12-30 11:29:00

标签: java eclipse python-2.7 pydev

我在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中。

请检查PyDevjava classpython 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()

配置图片:

enter image description here

您是否有任何建议在使用pandas模块运行代码时可能出现什么问题?

谢谢!

3 个答案:

答案 0 :(得分:0)

我可能会调查一些对我不合适的事情:

  1. PYTHONPATH你设置的是你不应该在你的脚本中做的事情,而是从外面设置PYTHONPATH(或者在PyDev中,让它为你管理它) - 另外,没有理由将report1.csv放在PYTHONPATH中(即:不要把东西放在sys.path中)。

  2. pd.read_csv(" report1.csv",sep =",",header = None):使用report1.csv的完整路径。

  3. 为您的代码创建一个单独的项目 - 不要将其放入/usr/local/bin/python2.7。

  4. 尽管如此,我还不确定是什么问题,但我的建议是首先让它在纯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>它将被下载并立即生效。