我有一个用 IronPython 编写的应用程序,我想将它作为 .exe 分发到其他 PC 上。我一直按照此处的说明使用 pyc.py ,并且取得了一定的成功。我最终得到一个目录,其中包含:
- my_app.exe
- my_app.dll
- StdLib.DLL [这包含标准 IronPython 库,如上面引用的 SO 帖子中所建议的]
- IronPython.dll
- IronPython.Modules.dll
- Microsoft.Dynamic.dll
- Microsoft.Scripting.dll
- Microsoft.Scripting.Metadata.dll
我正在使用 IronPython 2.7.3;在我的开发机器上,我有 .NET 4.0.30319.17929。
我遇到的问题是,当我将上述内容分发到其他机器时,在某些机器上它运行良好,而在其他机器上我得到以下信息:
Unhandled Exception: System.MissingMethodException: Method not found: 'Int32 Iro
nPython.Runtime.Operations.PythonOps.InitializeModuleEx(System.Reflection.Assemb
ly, System.String, System.String[], Boolean)'.
at PythonMain.Main()
它运行的机器包括 Windows 7 和 Windows XP 机器,它失败的机器还包括 Windows 7 和 Windows XP。我检查了 .NET 版本,比较了可以工作的机器和不工作的机器,我看不到任何明显的东西。例如,在失败的 XP 机器上,我有一个 .NET 配置文件:
<32Bit>
1.1.4322.2494
->C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
2.0.50727.3634
->C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
4.0.30319.269
->C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
< Installed .NET Frameworks >
.NET FW 1.1 SP 1
.NET FW 2.0 SP 2
.NET FW 3.0 SP 2
.NET FW 3.5 SP 1
.NET FW 4.0 Client
.NET FW 4.0 Full
在运行良好的 XP 机器上,我有一个 .NET 配置文件:
<32Bit>
1.1.4322.2494
->C:\Windows\Microsoft.NET\Framework\v1.1.4322
2.0.50727.3634
->C:\Windows\Microsoft.NET\Framework\v2.0.50727
4.0.30319.269
->C:\Windows\Microsoft.NET\Framework\v4.0.30319
< Installed .NET Frameworks >
.NET FW 1.1 SP 1
.NET FW 2.0 SP 2
.NET FW 3.0 SP 2
.NET FW 3.5 SP 1
.NET FW 4.0 Client
.NET FW 4.0 Full
这看起来和我一模一样。
我真的不知道接下来该看什么;任何线索?