2017-07-29 6 views
1

ipyコマンドを使用して正常に動作するVS2017を使用して、WPFでIronPython 2.7を使用するアプリケーションを開発しました。私は私ができる、次のエラーを取得し、WPFを使用したIronPython exe pycエラーのコンパイル

すべての関連のDLLなど、プロジェクトのXAMLファイルがデプロイフォルダに配置されている
ipy pyc.py /main:IronPython5.py /target:winexe 

しかし:私はCMDで次のコマンドを使用してプロジェクトからEXEファイルを作成したいです

import wpf 
from System.Windows import MessageBox 
from System.Windows import Application, Window 

class MyWindow(Window): 
    def __init__(self): 
     self.str1 = "" 
     wpf.LoadComponent(self, 'IronPython5.xaml') 
    def Button_Click(self, sender, e): 
     if self.str1 == "": 
      MessageBox.Show("msg1") 
     else: 
      MessageBox.Show("msg2") 
     pass 

if __name__ == '__main__': 
    Application().Run(MyWindow()) 

ともIronPython5.pyが含まれています:

Traceback (most recent call last): 
    File "pyc.py", line 332, in <module> 
    File "pyc.py", line 327, in Main 
    File "pyc.py", line 181, in GenerateExe 
SystemError: Ambiguous match found. 

Ironpython5.pyが含まれています

「がtは手段であるかを理解します
<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="IronPython5" Height="300" Width="300"> 
     <Grid> 
     <Button Content="Button" HorizontalAlignment="Left" Margin="159,238,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> 
    </Grid> 
</Window> 

のdllファイルは、次のとおりです。

  • IronPython.dll
  • IronPython.Modules.dll
  • Microsoft.Dynamic.dll
  • Microsoft.Scripting.dll
  • Microsoft.Scripting .Metadata.dll

pleこのエラーを修正してexeファイルを生成する方法を教えてください。

+0

このチュートリアルへのリンクを共有したり、ファイル内の内容を垣間見ることはできますか? – Ayushya

+0

@ Ayushyaこれはそのためのリンクです。 [link](https://dbaportal.eu/2009/12/21/ironpython-how-to-compile-exe/)には、いくつかの簡単なファイル操作(R/W)が含まれています。 – 1chenar

+0

これを解決する方法を探しているうちに、私は[this](https://stackoverflow.com/questions/1578010/ironpython-2-6-py-exe)に出くわしました。それまでは詳細を調べています。 – Ayushya

答えて

2

サンプルWPF IronPythonプロジェクトは、this solutionのヒントに従って実行していますが、ipyc.exeを使用してIronPython 2.7.7インストールに付属するコンパイルを行いました。

最後の実行可能ファイルにすべての依存関係を持たせるには、手動でロードする必要があるようです。これはおそらく、すでに次に、あなたのプロジェクトフォルダにdllファイルの追加を

import clr 

try: 
    clr.AddReferenceToFileAndPath("IronPython.Wpf.dll") 
    clr.AddReferenceToFileAndPath('PresentationCore.dll') 
    clr.AddReferenceToFileAndPath('PresentationFramework.dll') 
    clr.AddReferenceToFileAndPath('WindowsBase.dll') 
except: 
    pass 

from System.Windows import Application, Window 

import wpf 

class MyWindow(Window): 
    def __init__(self): 
     wpf.LoadComponent(self, 'Wpf_Example.xaml') 


if __name__ == '__main__': 
    Application().Run(MyWindow()) 

VS

によって追加されているようなtry/exceptブロックせずにVisual Studioで実行されないだろうと

注意、。彼らはここで見つけることができます。C:\ Program Files(x86の)\リファレンスアセンブリ\マイクロソフト\ Framework.NETFramework \ V4.0

\そしてipyc呼び出すことipyc

ipyc Wpf_Example.py /target:winexe 

注意して別の方法をコンパイル!/main:オプションを使用するとうまくいきません!

+0

最後に実際に動作するソリューション。これを投稿していただきありがとうございます。 –

関連する問題