2011-01-02 10 views
4

私の計画:私は、グラフを移入し、新しいウィンドウでそれを描く、特定の関数を呼び出すことNodeboxと通信するためのセットアップに私のC#プロジェクトをしようとしているIronPythonのとNodebox

現状:[固定...アップデート2を参照してください]

私はすでに、すべてのpython-のモジュールが必要に含まれているが、イムはまだ

Library 'GL' not found

それはそうなっ

pygletモジュールが必要としますGL/gl.hへの参照ですが、IronPythonの動作のためにそれを見つけることができません。

要件:

プロジェクトは、新しいパッケージをインストールせずに、できるだけ小さく滞在する必要があります。それで、なぜ私はすべてのモジュールをプロジェクトフォルダにコピーしたのか、そういう形にしておきたいのです。

私の質問:

私の問題のため、特定の回避策またはライブラリフォルダのmissmatchの修正があります。 Tao-OpenglOpenTKについての記事を読んでいますが、良い解決策が見つかりません。

アップデート1:

が小さいpygletウィンドウレンダリングの例で私のソースコードを更新しました。問題はpygletと参照c-Objectsにあります。どのようにそれらを私のC#プロジェクトに組み込んで呼び出すのですか?これまでのところ考えていない...今、alittleを実験している。あなたの更新を維持する。

のSampleCode C#:

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

ScriptSource source = engine.CreateScriptSourceFromFile("test.py"); 
ScriptScope scope = engine.CreateScope(); 
source.Execute(scope); 

のSampleCodeパイソン(test.py):

from nodebox.graphics import * 
from nodebox.graphics.physics import Vector, Boid, Flock, Obstacle 

flock = Flock(50, x=-50, y=-50, width=700, height=400) 
flock.sight(80) 

def draw(canvas): 
    canvas.clear() 
    flock.update(separation=0.4, cohesion=0.6, alignment=0.1, teleport=True) 
    for boid in flock: 
     push() 
     translate(boid.x, boid.y) 
     scale(0.5 + boid.depth) 
     rotate(boid.heading) 
     arrow(0, 0, 15) 
     pop() 

canvas.size = 600, 300 

def main(canvas): 
    canvas.run(draw) 

アップデート2:

行139 [pyglet/lib.py] sys.platformがwin32ではありません...エラーがありました。ここで、次のエラー

from pyglet.gl.lib_wgl import link_GL, link_GLU, link_WGL 

:それを修正するために、痛みの

'module' object has no attribute '_getframe' 

種類を単にラインを使用して、それを修正しました。結果で更新中...

Update3と:右C#-codeの最初の行の後に次の行を追加することにより、固定

setup.Options["Frames"] = true; 

現在の問題:

No module named unicodedataが、Python26/DLLsであるだけで*.pydファイル 'となります。だから、どうやって今実装するの?

Update4:サーフィンで修正

link textとC#Projectfolderにunicodedata.py'.pydを追加します。

現在の問題:

'libGL.soが見つからない' ...人は...イムほとんど

Update5を継続する... C#のためnodeboxをあきらめます

私はあきらめました:/ workaround:xmlとfilesystemwatchersでnodeboxと通信しています。最適ではありませんが、ケースが解決しました。

+0

「_getframe'についての記事:http://ironpython.codeplex.com/workitem/1042?ProjectName=ironpython そして、私はそれを修正する方法はまだ分かりません。-X:Frame option mean? – proxylittle

答えて

0

-X:Framesはフレームオプションを実行時に有効にします(コードを少し遅らせて、Pythonフレームに常にアクセスできます)。代わりに、あなたが今渡しているヌルの

ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(new Dictionary<string, object>() { 
    { "Frames", true } 
}); 

を:あなただけ行う必要がホストする場合

はフレームを有効にするには。これは、コンテンツの "Frames"がtrueに設定されたオプション辞書の新しい辞書を作成することです。そこに他のオプションを設定することもできます。一般的に-X:Nameオプションは、コマンドラインの場合と同じです。

+0

援助の答えが良いと答えていない。私はそれを受け入れるでしょう。 – proxylittle