我正在尝试围绕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
,这是行不通的。