2016-10-03 5 views
0

Visual StudioでIronPythonでPythonスクリプトを実行しようとしましたが、このコードを使用してPythonスクリプトでライブラリを使用しようとするまでうまくいきます。Visual StudioでIronPythonを使用しているライブラリでPythonスクリプトを実行できない

var ipy = Python.CreateRuntime(); 
dynamic test = ipy.UseFile("C:/Python/Test.py"); 
var whatever = test.python_string(); 
MessageBox.Show(whatever); 

そして、Test.pyは次のようになります。

できるだけ早く私は、Visual Studioのプログラムが実行されませんPythonのコードへ

from moviepy.editor import * 

またはその他のlibaryインポート文を追加しようとして

def python_string(): 
    return "Okay" 

私はVisual Studio 2015を使用しています。私はIronPythonを自分のWebサイトに示すように設定します。私はVisual Studioのある場所にライブラリを追加する必要があると推測していますが、どこでどのように考えているのかわかりません。

私はこれを明確にしました。前もって感謝します。

+0

[Visual Studioでライブラリを使用したPythonファイルを使用する](http://stackoverflow.com/questions/39862954/using-python-files-with-libraries-in-visual-studio) – denfromufa

答えて

0

私がこの問題を抱えていたとき、Stackのどこかに同様の性質の問題がもう1つありましたが、今はそれを見つけることができません。 (もし誰かがそれに出くわしたら、コメントにリンクを入れてください)。

私がそれを動作させる方法は、スクリプトエンジンにパスを追加することでした。

 ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null); 
     ScriptRuntime runtime = new ScriptRuntime(setup); 
     ScriptEngine engine = Python.GetEngine(runtime); 

     var paths = engine.GetSearchPaths(); 
     paths.Add(prod.GetImportScope()); 
     paths.Add(AppDomain.CurrentDomain.BaseDirectory + "Lib"); 
     paths.Add(AppDomain.CurrentDomain.BaseDirectory + "selenium"); 
     engine.SetSearchPaths(paths); 

あなたはIronPythonのでスクリプトを実行すると、それはPythonのファイルがあろうと通常の範囲で動作していません。ですから、あなたはPython StdLibとあなたがインポートしている他のファイルをどこに見つけるか教えてください。スクリプトがそれ自身の上で正常に動作しても、IronPythonではそのリソースを見つける場所を教えずにはできません。

私はIronPythonのエキスパートではありませんので、これを行うより効率的な方法があります。

0

SharpDevelopを使用しているときに同じ問題が発生しました。 hereの指示に従って、外部モジュール/パッケージ用のクラスライブラリ(DLL)を作成します。出力DLLをプロジェクト参照に追加します。次に、あなたのC#のmain()の中で、このようなものをアセンブリをロードする:

// make sure to include "using System.IO" 

string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "serial.dll");    
engine.Runtime.LoadAssembly(Assembly.LoadFile(path)); 

engineは、あなたのPython ScriptEngineを指します。

これを使ってpyserialモジュールのアセンブリを作成し、C#/ IronPythonプロジェクトに組み込みました。私は良い方法があるかどうかわからないが、何時間もの欲求不満の後、これが私のために働いた。

関連する問題