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

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

为什么你需要“让包装器在使用 java1.7.0_03 进行内部平台测试检测时不会失败的技巧”,我不能说。但是设置为 win32 会使 Jython在使用时sys.platform尝试导入,这不起作用。msvcrtsubprocess

于 2012-05-02T10:41:26.987 回答