Python の oscrypto で LibraryNotFoundError の発生とその対処

2023年10月15日 engineering

こんにちは、 @kz_morita です。

Python 周りの環境を構築したりしているなかで、 oscrypto で以下のようなエラーが発生しました。

oscrypto.errors.LibraryNotFoundError: Error detecting the version of libcrypto

上記エラーのの原因調査と回避方法についてまとめます。

原因

原因は以下の Issue にかかれています。

oscrypto ライブラリから、OpenSSL の 3.0.10 以降のバージョンを認識できないことが原因です。

実装自体は以下の Pull Request で解消されています。

↓コードが openssl のライブラリを正規表現で判定するところですが、1桁しか判定できないようになっていたっぽいです。

version_match = re.search('\\b(\\d\\.\\d\\.\\d[a-z]*)\\b', version_string)

master ブランチにはすでにマージされていますが、まだ PyPI にはリリースされていないので、pip install で最新版はインストールできません。

回避方法

回避方法としては、github の master ブランチの commit hash を指定して pip install すれば大丈夫です。

requiments.txt を使っている場合は以下のようにして特定の hash の commit を指定できます。

oscrypto @ git+https://github.com/wbond/oscrypto.git@1547f53

上記は 1547f53 の hash を指定している例になります。

上記を requirements.txt に追加して下記で pip install したところ、上記エラーを回避することができました。

$ pip install -r requirements.txt

まとめ

今回は Python の oscrypto のエラーの原因と回避方法についてまとめました。

Python は久しぶりだったのですが、Issue 探すと色々とやりとりされているのでライブラリの 1 次情報 である GitHub を見に行くのは大事だなと改めて思いました。

この記事をシェア