最終更新日 2024-06-21

hmPython3 インストール出来ても使えないライブラリ

概要

前節でhmPython3へのモジュールのインストール方法を紹介しましたが、
ここでは、「ライブラリによっては、hmPython3では使えない」ということが説明されています。

「numpy」や「pythonnet」は使えない

hmPython3は、その性質上、
1つのプロセス内で、プロセスを終了することなく、
「複数回」実行する必要
があります。

しかも複数回実行する度に、実行状態(環境のスコープ状態)を初期化する必要があります。

最初からPythonに付属しているライブラリについては、原則、この複数回の初期化に対応していますが、
サードパーティ製のライブラリについては、この「複数回の初期化」に対応していないものがあります。

元々複数回の初期化に対応していない「numpy」や
1回実行すると、ガベージコレクト任せなため、解放までに時間がかかってしまう「pythonnet」などがこれに該当します。

失敗することの確認。Package Indexを探す

numpyのPackage IndexのURLは

となります。

自分のバージョンにマッチする、Wheelファイルのダウンロード

PythonDev.batのバッチファイルが用意されている

hmPython3には秀丸フォルダのサブディレクトリの「HmPython3」フォルダ内に、
「PythonDev.bat」が用意されており、これを利用することで、
「パスが通っていないPythonに一時的にパスを通し、少し楽にコマンドを打つことが出来るようになっています」

PICTURE

直接「pip.exe」を使うのではなく、python -m経由で使う必要あり

他の正規インストールをしたPythonが存在すると、「pip」コマンドを直接使うと、
そちらのPythonへとインストールされてしまいます。

これを避けるには、以下のように「python -m」を先頭につけて、
どのPythonへとインストールするのかを明示するコマンドを入力しましょう。

1回目の動作確認

TestNumPy.mac
#DLL = loaddll( hidemarudir + @"\hmPython3.dll" );

#r = dllfuncw( #DLL, "DoString", "import testnumpy");

freedll( #DLL );
testnumpy.py
 from hmPython import hm
import numpy as ns

arr = ns.asarray([1,2,3])
hm.debuginfo(arr)

2回目の動作確認

1回目は無事実行出来ますが、2回実行すると、
秀丸が不正終了してしまうことがわかります。

numpyは「プロセスが継続した状態」で複数回の「Python環境の初期化」に対応していないためです。

どうすればよいのか?

hmPython3からアウトプロセスとしてPythonを起動し、
「インプロセス」と「アウトプロセス」で連携することで、対処してください。

サンプル例を、hmPythonとアウトプロセスPython連携に掲載しています。