各種システム開発・WEBコンテンツ制作・WEBデザイン・ホームページ制作・インフラ設計・構築・レンタルサーバー・ソフトウェア技術者のアウトソーシング事業を行っております。

9 月
27

C言語開発からPython言語開発へ ~C#からPythonを呼び出す~

技術スタッフ


異なる言語でやり取りができることを知りました。
一応、組み込み開発でもC言語の処理中にアセンブリ言語を埋め込ませるインライン
アセンブラという手法はあります。
ただ、C#とPythonの組み合わせと違うのが、C言語はアセンブリ言語を高水準化した
ものなので、ソースコードでは違う言語ですが、ベースは同じアセンブリ言語です。

 

さて本題に入りますが、ネットで調べていく中で3つの手法を見つけて試しました
(実際は他にもありましたが、時間の関係で絞っています)。

1)ProcessStart(C#のライブラリ)を使う
2)IronPythonを使う
3)pythonnetを使う

結論から言いますと、3)のpythonnetを使う手法がベストだと思いました。

 

1)C#のライブラリProcessStartを使う

ProcessStartを使うと、Pythonプログラムのprint文に書かれた情報を取得する
ことができます。
ただし、この方法だと取得したデータ型が全て文字列になってしまう欠点があります。
工夫をすれば文字列以外も取得できますが、おかしなプログラムになってしまうので
使うのは難しそうです。

 

2)IronPythonを使う

IronPythonとは、.NET Frameworkの上で(C#によって)実装されたPythonです。
そのため、IronPythonを使えば普通にC#からPythonの情報を取得することができます。
ただし、PythonとIronPythonは動作する環境が異なります。
IronPythonを使うには、別にIronPythonの環境をインストールする必要があります。
そこに問題がなければ、この手法が一番いいかもしれません。

 

3)pythonnetを使う

GitHubにあるpythonnetをビルドして、生成したPython.Runtime.dllを利用して
Pythonの情報を取得します。
この手法を使えば、ほとんどのPythonの情報を受け取れます。
ただ、ビルドする環境作りとVisual StudioでC#とPythonの両方を実装する環境作りと
C#からPythonを呼び出すためのセットアッププログラムを作るのに手間がかかります
(ネットで作る手順を参考にしましたが、数時間かかりました)。

今回C#からPythonを呼び出すことを学んで新たに得たことは、今まで苦労してきた
C#のプログラムが理解できるようになりました。
とはいえ、まだまだインターネットの力は必要です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

月別アーカイブ

カテゴリ