2012-04-26 13 views
0

私はPythonモジュールの周りにラッパーを構築して、それを自分のJavaコードに埋め込もうとしています。Jython、サブプロセス、msvcrt ...可能ですか?

は私が避けるためにしようとしています(実際にはIS-ASのみバイナリとして提供されるCユーティリティを制御モジュール自体で、

にそうスレッドと、このモジュールの使用のようなサブプロセスのような多くのトリックを探します

------------------ 
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 

私は私のハードディスクに見れば、そこ:ジャワから私自身のラッパー、それをインスタンス化するとき私が得る、やり方によってこのPythonラッパーがすでに提供し、内部ロジックと他のツール)

を再コーディングするovercost 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 

答えて

1

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

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

+0

ありがとうございます!どのようにあなたがそれを確認することができたのかわかりませんが、実際の値を 'win32'に変更せずにsys.platformの値に依存する部分を適応させました!私はそれがリンクされていたと推測するよりもはるかに遠かった!私の質問ではここにそれを書いていないかもしれません... – user1340802

関連する問題