.net column

.NET開発者のためのブログメディア

C#からPythonを呼び出すには?ProcessStart・Visual Studio 2019を起動

公開日時:   更新日時:
C#からPythonを呼び出すには?ProcessStart・Visual Studio 2019を起動
基本情報技術者試験の試験対策はこちら>>
SE
C#からPyhtonを呼び出すにはどうすればいいのですか。
PM
C#からPythonを呼び出す方法には3通りありますが、今回はProcessStartを使った方法を解説します。

C#からPythonを呼び出すには


C#からPythonを呼び出す方法には3通りあります。pythonnet、IronPython、ProcessStartの3つの方法です。

pythonnetはVisual Studio 2019では古くてエラーが出るので、ここでは扱いません。IronPythonは普通に使われているPythonとは違うので扱いません。

ここではProcessStartを使ってC#からPythonを呼び出すことを行います。

ProcessStartとは

ProcessStartとはC#から外部プロセスを動かすもので、Pythonの環境そのままでPythonプログラムを動かすことが出来るものです。

ProcessStartはPythonのバージョンに左右されずにPythonのプログラムを書いてそのままC#で実行可能なのです。

C#側もC#のコードを書くだけですので、初学者にはわかりやすい方法といえます。

Visual Studio 2019を起動

それではC#からPythonを呼び出すことをします。Visual Studio 2019を起動させ、C#の「コンソールアプリ(.NET Frameworrrk)」を選択して下さい。

Program.csを以下のコードに書き換えます。

ここでキモなのは

このソースコードでキモとなるのは次のところです。

これがProcessStartでプログラムを走らせる参照設定になります。この1行を加えるだけでC#からPythonスクリプトを呼び出すことが可能になります。

その他で重要な部分は

その他で重要な部分は次の通りです。

これはソースコードにコメントアウトで書いてある通りにPythonスクリプトへのフルパスを通します。ここでは

となっているので上記のソースコードでビルドしたと時に生成されるbinフォルダの中のDebugフォルダに設置しなければなりません。それは生成されるConsoleApp_Python_in_CSharp.exeと同じフォルダにtest.pyがあることを示しているからです。

test.pyの作成

それではVisual Studio 2019をビルドしてDebugフォルダにtest.pyを設置します。test.pyは次の通りです。

デバッグなしで開始

Visual Studio 2019をデバッグなしで開始します。すると、コマンドプロンプトが立ち上がり次のように出力されていれば成功です。

色々とtest.pyで試してみる

C#のソースコードは下記の通りどこも変えないで、test.pyを変えて色々と試してみます。

test.pyを次のように変えます。

次のように出力されるはずです。

これでC#からPythonが呼び出されていることがハッキリと分かるでしょう。

円の面積を求める

次にtest.pyでnumpyをimportして半径x=2の円の面積を求めてみます。その際、引数にyは必要ないのでC#のコードを次のように書き換えます。

test.pyは次のように書き換えます。

次のように出力されれば成功です。

SE
ProcessStartを使ったPythonの呼び出し方についてよく分かりました。
PM
今は日常生活ではAIは欠かせません。AIといえばPythonですが、画面操作を伴うような場合、C#で画面周りは作ってPyhtonが呼び出せればとても便利です。今回ご紹介した方法を理解して、今後活用してください。

C#からPythonの呼び出し方を知っていて損はありません

AIが日常生活に深く入り込んでいる今、Pythonはこれから先も大人気のプログラミング言語となるでしょう。しかし、UI周りはC#で作り込んだ方が何かと便利です。

そのためにC#からPythonを呼び出す方法を知っていれば、鬼に金棒です。是非、自分でもっと調べてコードを書きながら実践して下さい。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags