IDE内部的Jython还行,IDE外部,"no os specific module found"?



我已经让Jython解释器工作了。但是当从 java 1.7u45 切换到 java 8 时,它只在 IDE 中运行。

我的项目使用 Jython2.5.3。所有标准的 python 模块都被打包到一个 zip 文件中,并放在 java 类路径上。

现在Jython找不到"os"报告:

Traceback (most recent call last):
  File "a.py", line 36, in <module>
    import b.c as c
  File "c.py", line 1, in <module>
    import os
  File "__pyclasspath__/os.py", line 132, in <module>
  ImportError: no os specific module found

我比较了使用 JVisualVM 从命令文件和从 IDE 启动应用程序之间的 VM 设置。没有明显的差异。
我还更改了命令文件以使用 JDK1.8.0(当 netbeans 启动时)而不是 JRE1.8.0
我还更改了命令文件以运行 IDE 生成的.class文件,而不是生产 jar。
我还在命令文件版本中添加了"-XDebug"以匹配IDE设置
使用 VisualVM 进行检查时:
= JVM 完全相同,
= JVM 参数完全相同(除了 Netbeans 有 "Xrunjdwp")
= 系统属性几乎相同:

  • 'java.library.path' 是相同的
  • "java.class.path"上的 jar 是相同的,尽管 jar 有不同的路径。
  • 但是命令文件版本中缺少python.console.encoding=cp437(IDE如何引入这个?
  • 用户.dir 是不同的

我不知道下一步该怎么做/检查。希望有人有想法。谢谢

更新
似乎 Jython 内部变量"sys.builtin_module_names"是一个集合,内容在每个场景中都不同。在 IDE 之外,缺少"nt"和"jffi"。os.py 引发异常"导入错误:未找到特定于操作系统的模块"。如果集合不包含任何

  • 波西斯
  • 新台币
  • 操作系统2
  • 公元
  • 里斯科斯
  • 伊比米

更新 2
找到了..原来 Jython2.5.1 与 Jython2.5.3 的 zip 模块混合在一起

事实证明,Jython2.5.1 解释器与 Jython2.5.3 的标准模块的压缩模块混合在一起

我之前混淆了解释器版本和标准模块的压缩版本,但这次解释器使用的是次要版本,我没有看到。

最新更新