PythonでC#(dll)を利用する方法

PythonでC#(dll)を利用する方法

PythonでC#(dll)を利用する方法

私は今まで、C#での開発をする機会が多かったのですが、最近はAI関連のアプリ構築の関係でpythonを多く使用しています。
Pythonもライブラリが豊富なので、pipでインストールできるライブラリで大半のことができます。
しかし、ニッチなライブラリは自作するなどのしないといけず、「過去にC#で構築したものが使えればなぁ」と感じる場面が増えてきました。

そんな中、ふと「確かnumpyってC++で構築されたライブラリって言っていたな」と思い、もしかしたらpythonでdllを利用する方法があるのではないかと思い立ったのです。
そしたらちゃんと方法があったので、今回はこれを紹介していきたいと思います。


pythonnet

pythonからdllを呼び出すにはpythonnetというライブラリを使うことで実現できます。
※dllを呼び出すためには、そのSDKも必要になるので注意。(例:.Net6など)
導入方法と使用方法を紹介していきます。

今回は自作ライブラリであるTranscript4CSVの呼び出しを例にします。

  1. ライブラリの導入
  2. 下記コマンドを実行してライブラリをインストールします。

     pip install pythonnet

  3. import
  4. 下記コードを記述し、ライブラリをコード内で利用できるようにします。

     from pythonnet import load
     load('coreclr')
     import clr

  5. dllの読み込み
  6. dllの読み込みを行います。

     clr.AddReference('Transcript4CSV')

  7. 名前空間をimport
  8. .Netの名前空間をPythonのパッケージとしてimportします。

     from Transcript4CSV import TranscriptProcess

  9. 各種メソッドの呼び出し
  10. ここまでできたら、各種メソッドを呼び出します。
    戻り値のあるメソッドでも普通に呼び出すことが可能で、3行目のようにpython変数に格納可能です!

     transcript = TranscriptProcess("path")
     transcript.MakeCSVList()
     csv_list = transcript.GetCSVData()

  11. pythonコーディング
  12. dotnetのList戻り値であっても、普通にpython変数として処理が可能です。

     text_array = []
     for data in csv_list:
        text_array.append(data.split(',')[1])

このようにdotnetのライブラリであっても、Pythonから呼び出して利用が可能です!


さいごに

今回は、pythonからdotnetのライブラリを呼び出す方法を紹介しました。
正直、特殊事例な気もしますので多用することはないかもですが、同じく過去の自作ライブラリなどを利用したい場面もあると思うのでよければ参考にしてみてください。

ちなみに、今回利用した自作ライブラリを導入したwebアプリを公開しています。
vttファイルをアップロードすることで、その内容を要約するというものです。
まだβ版なので要約精度が安定しない状態ではありますが、よければ利用してみてください。
Summarin(vtt要約)

今回はこの辺で、ではまた!

コメント

このブログの人気の投稿

Power Automateでファイル名から拡張子を取得

PowerAppsで座席表を作成する

Power AutomateでTeamsのキーワードをトリガーにする