0

Python モジュールのラッパーを作成して、Java コードに埋め込もうとしています。

このモジュールは、サブプロセス、スレッド化などの多くのトリックを使用しているようです

(実際には、それ自体が現状のままで提供されるCユーティリティを制御するモジュールであり、バイナリとしてのみ提供されます。このpythonラッパーがすでに提供している内部ロジックやその他のツールを再コーディングするための過大なコストを回避しようとしています)

ちなみに、Java から独自のラッパーをインスタンス化すると、次のようになります。

------------------
Exception in thread "MainThread" Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "__pyclasspath__/mywrapper.py", line 303, in <module>
  File "C:\jython2.5.2\Lib\subprocess.py", line 375, in <module>
    import msvcrt
ImportError: No module named msvcrt

ハードディスクを見ると、msvscrt.py がありません。どこに住んでいると思われますか?

私は私のjythonを起動しています:

    PythonInterpreter interpreter = new PythonInterpreter(null, new PySystemState());

    PySystemState sys = Py.getSystemState();
    sys.path.append(new PyString("C:/jython2.5.2/Lib"));
    sys.platform = new PyString("win32"); // this is a trick for the wrapper to not fail on a inner plateform test detection with java1.7.0_03
4

1 に答える 1

1

msvcrtJython では使用できません。Windows 上の CPython では、msvcrtPython インタープリターにコンパイルされた組み込みモジュールです (これは で確認できますsys.builtin_module_names)。msvcrt.pyファイルはありません。

「Java1.7.0_03 を使用した内部プラットフォーム テスト検出でラッパーが失敗しないようにするためのトリック」が必要な理由はわかりません。しかしsys.platform、win32 に設定すると、Jython はmsvcrtを使用するときにインポートを試みますsubprocessが、これは機能しません。

于 2012-05-02T10:41:26.987 に答える