2017-03-21 5 views
0

IronPythonをC#ScriptEngineとして使用しているときに、PyroまたはPyro4をインポートする際に問題が発生しています。IronPython ScriptEngineでPyroをインポートする

ipyインタープリタで直接実行すると正常にインポートされますが、ipyがc#スクリプトからスクリプトエンジンとして初期化されると、次のエラーが発生します。 FullFramesと-X::それは初期化がすでにだ時にフレームパラメータがIPYするので、私は、私はそれを除外していると信じて

TypeErrorException: sequence item 0: expected bytes or byte array, str found 
IronPython.Runtime.Operations.ByteOps.AppendJoin (System.Object value, Int32 index, System.Collections.Generic.List`1 byteList) 
IronPython.Runtime.Bytes.join (System.Object sequence) 
Microsoft.Scripting.Interpreter.FuncCallInstruction`3[IronPython.Runtime.Bytes,System.Object,IronPython.Runtime.Bytes].Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame) 
Microsoft.Scripting.Interpreter.Interpreter.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame) 

私は-Xを渡しています。実際、このエラーは、このパラメータで初期化するかどうかにかかわらず発生します。

// Set the fullframes parameter in a dict 
var options = new Dictionary<string, object>(); 
options["Frames"] = true; 
options["FullFrames"] = true; 
// create the engine 
var ScriptEngine = IronPython.Hosting.Python.CreateEngine(options); 
// and the scope (ie, the python namespace) 
var ScriptScope = ScriptEngine.CreateScope(); 

//set the python file to execute 
string scriptPath = "Assets\\test.py"; 
var ScriptSource = ScriptEngine.CreateScriptSourceFromFile(scriptPath); 

そして、もちろん、Pythonスクリプトでは、私はパイロのインポート時に、このエラーが発生します:ここで

は、C#で私のコードです。

import Pyro 

このエラーは一般にIPYでの作業には鈍いです。私は困惑しています。 少しのトレースバックを得るためのテクニックも含め、洞察力があれば、大きな助けになるでしょう。

ありがとうございます!

+0

IronPythonでは文字列がユニコードであり、これは問題の根本となるかもしれません。しかし、これはまだ、このコードが標準のipy.exeでは実行されますが、ScriptEngineでは実行されない理由を説明していません。 – karmakat

答えて

0

私は、IPY 2.7.4のdllと2.7.7のサイトライブラリモジュールを使用していました。

さらに一歩

、と私はここで説明するように2.7.4がパイロに問題があることを発見した:

http://pyro-core.narkive.com/0G88Usma/bug-typeerror-expected-pointer-got-int64

あなたがIPYからあなたの完全なトレースバックを見ることができる場合は、そのパイロにラインを見ることができます問題を引き起こし、ハッキーな修正はメソッドをコメントアウトすることです。

+1

Ironpythonの用途は何ですか?他のPythonコードも実行していますか? C#環境でPyro _client_機能のみを使用している場合は、代わりにPyroliteネイティブ.NETライブラリ(https://pythonhosted.org/Pyro4/pyrolite.html)を使用することもできます。 –

関連する問題