前提・実現したいこと
GUI(C#)からPython上の処理を呼び出すため、Process通信を介して
Pythonの実行ファイルとスクリプトを呼び出し、処理結果を標準入出力経由で
GUIに受け取ろうとしています。
Pythonの動作環境はAnacondaを用いて仮想環境を一つ作り、
その中に必要なライブラリを詰めて構築しています。
Python上の処理を実行する前には仮想環境のactivateが必要なのですが、
activateはAnacondaのGUIかターミナルでしか行えず、
GUI(C#)からどのように仮想環境をactivateすればよいのか、
その方法が解りません。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C#
1private void button1_Click(object sender, EventArgs e) 2{ 3 //インタプリタのパス 4 var InterpreterPath = @"C:\Users\Username.conda\envs\tflow_cv\python.exe"; 5 6 //スクリプトのパス 7 var ScriptPath = @"D:\script.py"; 8 9 var arguments = new List<string> 10 { 11 ScriptPath , 12 "--data_dir=D:\dataset", 13 }; 14 15 var process = new Process() 16 { 17 StartInfo = new ProcessStartInfo(InterpreterPath) 18 { 19 UseShellExecute = false, 20 RedirectStandardOutput = true, 21 RedirectStandardError = true, 22 Arguments = string.Join(" ", arguments), 23 } 24 }; 25 26 process.OutputDataReceived += CaptureOutPut; 27 process.ErrorDataReceived += CaptureError; 28 process.Start(); 29 process.BeginOutputReadLine(); 30 process.BeginErrorReadLine(); 31 process.WaitForExit(); 32} 33 34void CaptureOutPut(object sender, DataReceivedEventArgs e) 35{ 36 PyDataReceived(sender, e); 37} 38 39void CaptureError(object sender, DataReceivedEventArgs e) 40{ 41 PyDataReceived(sender, e); 42} 43 44void PyDataReceived(object sender, DataReceivedEventArgs e) 45{ 46 if (e.Data == null) return; 47 //文字列の受取 48 Console.WriteLine(e.Data); 49 BeginInvoke(new DisplayTextDelegate(DisplayText2), new object[] { e.Data }); 50}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
OS:Win10
PythonVer:3.7.5 Anacondaの仮想環境上で動作
開発環境
GUI(C#) : VS2017
Python : VScode
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。