我正在尝试围绕Python模块构建包装器,以将其嵌入到我的Java代码中。

看起来这个模块使用了很多技巧,例如子进程,线程等等

(实际上,它本身是一个控制C实用程序提供的AS-IS的模块,并且仅作为二进制文件,我正在努力避免重新编码此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

最佳答案

msvcrt在Jython中不可用。在Windows上的CPython中,msvcrt是编译到Python解释器中的内置模块(您可以使用sys.builtin_module_names进行检查)。没有msvcrt.py文件。

我为什么不能说“为什么包装程序不能在使用java1.7.0_03进行内部平台测试检测时失败”?但是将sys.platform设置为win32会使Jython在使用msvcrt时尝试导入subprocess,这是行不通的。

10-07 14:00