ほりひログ

所属組織の製品 (Azure とか) に関連する内容が多めだけど、個人の見解であって、所属組織を代表する公式情報ではないです。

続々 Azure Functions の python 関数で OpenCV を使う

「またかよ」て言わないでください。

前回の記事の終わりに書いた残る謎

なぜ LD_LIBRARY_PATH で指定したネイティブ ライブラリーをロードしてくれないのか

これについて、記事投稿後に上げた issue が半月以上放置されていましたが、突然 Python 強いマン (多分) が現れ、一気に動きました。

f:id:horihiro:20191102101143p:plain

曰く、「Pythonld 使って、LD_LIBRARY_PATH のライブラリを探しているからね。 ld 入ってないだろ? HAHAHA」 (雑訳) といった感じでしょうか。

貼ってもらったリンクはこちら。 cpython: 385181e809bc f:id:horihiro:20191102194230p:plain 詳しくは分かりませんが、ld ってコマンドを実行して (いるように見え) ます。

確認

では対象の Docker コンテナーで ld を探してみます。

$ docker run --rm -it  mcr.microsoft.com/azure-functions/python sh -c "which ld"

$

ハイ、入ってません。少なくとも PATH は通っていませんね。いただいたコメント通りです。
LD_LIBRARY_PATH は使えない謎が解けました。

さて、どうしたものか。。。

と思ったら

あっという間に ld を含む binutils を Docker イメージに追加する Pull Request が。

github.com

マジかよ、はえぇよ。

改めて検証

したかったのですが、まだ上の Pull Request がマージされていないので、コンテナー イメージも更新されていません。
検証結果は、「続々々 Azure Functions の pyt(ry」で(しつこい)。

反省

颯爽と現れた Python 強いマンが提示した根本原因のおかげで、あっさりと対応されました。
やはり「できない」「困った」「どうしたらいい」を言って他人任せにしていては、なかなか問題は解決しないですね。。。

ちなみに

OpenCV 以外でも lightgbm とか OpenMP を使おうとすると同じような問題が起こるようです。

github.com github.com