7

私はPythonが初めてで、Jython2.7.0をインストールしました

ジャワ

import org.python.util.PythonInterpreter;
import org.python.core.*; 

public class Main {
    public static void main(String[] args) {
         PythonInterpreter interp = new PythonInterpreter(); 
         interp.execfile("D:/Users/JY/Desktop/test/for_java_test.py");  
         interp.close();
    }
}

パイソン

import pandas as pd
import ctypes

def main():
    data = pd.read_csv('for_test.csv')
    data_mean = data.a*2
    data_mean.to_csv('catch_test.csv',index=False)
    ctypes.windll.user32.MessageBoxW(0, "Done. Output: a * 2", "Output csv", 0)

if __name__ == '__main__':
    main()

次に、このエラーが発生しました。

Exception in thread "main" Traceback (most recent call last):
File "D:\Users\JYJU\Desktop\test_java\for_java_test.py", line 1, in <module>
    import pandas as pd
ImportError: No module named pandas

パンダを使いたい場合、どうすればこれを修正できますか?

4

2 に答える 2

9

Pandas は CPython 固有のネイティブ拡張に依存しているため、現在 Jython で Pandas を使用することはできません。1 つの依存関係は NumPy で、もう 1 つは Cython (実際にはネイティブの CPython 拡張機能ではありませんが、そのようなものを生成します) です。

JyNI プロジェクト(「Jython Native Interface」)に注目してください。Jython がネイティブ CPython 拡張機能を使用できるようにし、その正確な目的は、遭遇したような問題を解決することです。ただし、まだ大規模な開発が行われており、Pandas や NumPy を Jython にロードすることはまだできませんが、どちらのフレームワークも優先順位の高いリストにあります。

(たとえば、ctypes はすでにある程度機能しています。)

また、現在は POSIX のみです (Linux および OSX でテスト済み)。

Jython が特に必要ではなく、Java/Pandas の相互運用が必要な場合は CPython インタープリターを埋め込むことが既に実行可能な解決策になります。 これを提供するプロジェクトがJPYJEPです。それらのいずれかを使用すると、Java と Pandas (またはその他の CPython 固有のフレームワーク) を相互運用できるはずです。

于 2016-05-27T01:52:01.597 に答える