20

PythonInterpreterJava クラス内で fromを使い始めたばかりですが、うまく機能します。reただし、Python モジュール ( 、など) を含めようとするとHTMLParser、次の例外が発生します ( の場合re):

スレッド「メイン」トレースバックでの例外 (最も内側の最後):
  ファイル ""、1 行目、?
ImportError: re という名前のモジュールがありません

jython jar のクラスに、python が利用可能なモジュールを「表示」させるにはどうすればよいですか?

4

4 に答える 4

19

jython を埋め込み、いくつかの Python モジュールを使用します。

Java-Code にパス (sys.path) を設定する場合:

public void init() {
        interp = new PythonInterpreter(null, new PySystemState());

        PySystemState sys = Py.getSystemState();
        sys.path.append(new PyString(rootPath));
        sys.path.append(new PyString(modulesDir));
    }

Py は org.python.core にあります。

rootPath と modulesDir はあなたが望む場所です!

rootPath が standard-jython-lib を見つけた場所を指すようにします

たとえば、Jython-Source-Code の src/org/python/util/PyServlet.java を見てください。

于 2009-01-27T12:09:48.667 に答える
7

FAQによると:

4.1 Pythonライブラリのどの部分がサポートされていますか?

幸いなことに、Jythonは標準のPythonライブラリの大部分をサポートするようになりました。悪いニュースは、これが非常に急速に進んでおり、ドキュメントを最新の状態に保つのが難しいことです。

組み込みモジュール(CPython用にCで記述されたモジュールなど)は別の話です。Jythonで使用するには、これらをJavaに移植するか、JNIブリッジで実装する必要があります。一部の組み込みモジュール、特にcStringIO、cPickle、struct、およびbinasciiがJPythonに移植されています。ただし、JNIモジュールがJython本体に含まれる可能性は低いです。

標準のPythonモジュールを使用する場合は、インポートしてみてください。それがうまくいけば、おそらくすべて設定されています。モジュールに対してdir()を実行して、実装されている関数のリストを確認することもできます。

Jythonでまだ機能しない、本当に必要な標準のPythonモジュールがある場合は、メールを送ってください。

つまり、組み込みモジュールを使用しようとしている場合を除いて、JythonのPythonモジュールを直接使用できます。組み込みモジュールを使用しようとすると、Jythonに移植されたものがすべて使用できなくなります。

于 2009-01-22T22:39:59.247 に答える
1

jython sys.path を確認してください。ロードするライブラリがこのパスにあることを確認してください。詳細については、jython faqを参照してください。

于 2009-01-22T22:44:13.967 に答える
0

jython で Python モジュールをインポートするソリューションについては、こちらを参照してください。

ez_setup.pyここからダウンロードhttp://peak.telecommunity.com/dist/ez_setup.py

次に実行しjython ez_setup.py <any module name>ます。

任意のフォルダー パスで実行しても問題ありません。

問題なくpymysqlをインストールできました。

于 2015-11-26T10:30:07.463 に答える