他の PC で .exe として配布したい IronPython で記述されたアプリケーションがあります。ここの指示に従って pyc.py を使用してきましたが、ある程度成功しています。最終的に、以下を含むディレクトリになります。
- my_app.exe
- my_app.dll
- StdLib.DLL [上記の SO 投稿で提案されているように、これには標準の IronPython ライブラリが含まれています]
- 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
私と同じように見えます。
次に何を見ればいいのかよくわかりません。手がかりはありますか?