0

他の 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

私と同じように見えます。

次に何を見ればいいのかよくわかりません。手がかりはありますか?

4

1 に答える 1

0

上記の Jeff Hardy のコメントが答えです。エラーが発生したマシンには、古いバージョンの IronPython が既にインストールされており、exe と同じディレクトリに配布されているローカルのアセンブリではなく、それらのアセンブリを使用していました。問題のあるマシンで IronPython をアンインストールすることで解決しました。

于 2012-11-07T10:56:47.770 に答える