2017-12-03 12 views
1

コマンドラインで単純なC#アプリケーションからPythonスクリプトを起動しようとしています(IronPythonのようなパッケージは使用できません)。コンソール上で実行されたすべての印刷コマンドを見ることができるので、完璧に動作します。それはmatplotlibのプロットを示すようになると、問題は、発生する何も表示されませんが、次の行が実行されている...ここでC#のコマンドラインで起動したときにPythonプロットが表示されない

は、私はC#のからの私のPythonスクリプトを起動する方法です:

Process cmd = new Process(); 
cmd.StartInfo.FileName = "cmd.exe"; 
cmd.StartInfo.RedirectStandardInput = true; 
cmd.StartInfo.RedirectStandardOutput = true; 
cmd.StartInfo.CreateNoWindow = true; 
cmd.StartInfo.UseShellExecute = false; 
cmd.Start(); 

cmd.StandardInput.WriteLine("C:\\Users\\Alex\\Anaconda3\\python.exe C:\\Users\\Alex\\Desktop\\test.py"); 
cmd.StandardInput.Flush(); 
cmd.StandardInput.Close(); 
cmd.WaitForExit(); 
Console.WriteLine(cmd.StandardOutput.ReadToEnd()); 
Console.ReadKey(); 

とPythonスクリプトのみです:

import sys 
import matplotlib.pyplot as plt 

print("OK!!") 

plt.plot([1,2,3,4]) 
plt.show() 

print("Done") 

コマンドプロンプトで自分で起動すると、正常に動作します。 誰も既にこの問題を抱えていますか?どうもありがとう!

編集: plt.savefig( 'foo.png')を追加すると、プロットが保存されます。しかし、私はまだそれを表示したい。ここで

答えて

0

scriptcsコンソールでpythonnetを使用してこれを行う方法の一例です:

https://github.com/pythonnet/pythonnet/issues/442

> #r "C:\Python\Anaconda3_64b\Lib\site-packages\Python.Runtime.dll"; 
> using Python.Runtime; 
> PythonEngine.Initialize(); 
> dynamic mpl = Py.Import("matplotlib"); 
> mpl.use("TkAgg") 
> dynamic plt = Py.Import("matplotlib.pyplot"); 
> plt.plot(new List<float> { 1, 2, 3 }); 
> plt.show() 

enter image description here

+0

最終的な目標は、それが可能になり、WPFアプリケーションにそれを埋め込むことですこれとともに? – AlexM

+0

あなたのWPFアプリケーションの複雑さにもよりますが、ここでは小さなデモがあります:https://github.com/pythonnet/pythonnet/blob/master/demo/DynamicGrid.py – denfromufa

関連する問題