2015-09-11 39 views
5

.NET FrameworkでWPFを使用してGUIを構築しています。私はnumpy、scipyなどのモジュールを使用しているPythonスクリプトをC#で実行します。 今、私には2つの選択肢があります。PythonモジュールをDLLファイルに変換する

  1. プロセスp = new Process();// 方法#1を使用IronPythonの

を使用して

  • を "python.exe" と "filename.py" などの必要なパラメータを渡すことによって、かなり簡単ですが、このアプリケーションを配布する場合、私のエンドユーザは私のアプリケーションで私が指定したパスにそれらのPythonモジュールを持っていなければなりません。 を使用するメソッド#2私はIronPythonに付属していないため、それらのモジュールのDLLファイルが必要なので、これらのPythonモジュールに問題があります。 numpy、scipyなどのPythonモジュールをDLLファイルに変換する方法はありますか?

  • 答えて

    1

    clr.CompileModulesを使用して、pythonファイルをdllファイルに変換できます。あなたはこのような何かを行うことによって、単一のDLLにすべてのファイルを追加することができます。

    from System import IO 
    from System.IO.Path import Combine 
    
    def walk(folder): 
        for file in IO.Directory.GetFiles(folder): 
        yield file 
        for folder in IO.Directory.GetDirectories(folder): 
        for file in walk(folder): yield file 
    
    folder = IO.Path.GetDirectoryName(__file__) 
    all_files = list(walk(Combine(folder, 'moduleName'))) 
    
    import clr 
    clr.CompileModules(Combine(folder, "myDll.dll"), *all_files) 
    

    あなたは、このような何かを行うことによって、あなたのDLLへの参照を追加することができます。

    import clr 
    import sys 
    
    sys.path.append(r"C:\Path\To\Dll") 
    clr.AddReference("myDll.dll") 
    

    私はしかし、しないでくださいそのdllの中の関数にアクセスする方法を知っている。 thisによれば、import moduleNameを実行してインポートできます。しかし、これは私のためには機能しません。

    ソース:[add files to single dll][reference dll]

    関連する問題