実行時にPythonモジュールのバージョンを確認する方法【pkg_resourcesの使い方】
実行時にモジュールのバージョンを取得する基本の方法
Pythonで実行中にインストール済みモジュール(パッケージ)のバージョンを確認したい場合は、標準ライブラリの一部として提供されている pkg_resources モジュールを利用するのが定番の方法です。PyPIからインストールされたパッケージであれば、少なくともバージョン番号が登録されているため、この方法でほぼ確実にバージョン情報を取得できます。
具体的には、get_distribution() 関数に対象パッケージ名を渡し、その結果の version 属性を参照します。
>>> import pkg_resources
>>> pkg_resources.get_distribution("blogofile").version
'0.7.1'
このように、たった2行のコードで対象パッケージのバージョン番号を文字列として取得できます。
注意点:指定するのは「PyPI上のパッケージ名」
ここで重要なのが、get_distribution() に渡すパッケージ名はPyPIに登録されている正式な配布名でなければならないという点です。
たとえば、MySQL用の有名なドライバー MySQLdb の場合、モジュールをimportするときの名前は「MySQLdb」ですが、PyPI上での配布名は「mysql-python」です。そのため、以下のように書いてもエラーになります。
# 動作しない例:import名を指定している
pkg_resources.get_distribution('MySQLdb').version
正しくは、PyPIの配布名である「mysql-python」を指定します。
# 正しい例:PyPI上の配布名を指定
pkg_resources.get_distribution('mysql-python').version
import時のモジュール名とPyPIのパッケージ名が異なるケースは珍しくありません。「ModuleNotFoundError」や「DistributionNotFound」が出る場合は、まずPyPIのページで正式なパッケージ名を確認してみてください。
補足:Python 3.8以降なら importlib.metadata も便利
Python 3.8以降では、標準ライブラリの importlib.metadata を使う方法も推奨されています。pkg_resources はセットアップツール(setuptools)由来のモジュールであり、読み込みに時間がかかることがあるため、新しいコードではこちらを選ぶと良いでしょう。
>>> from importlib.metadata import version
>>> version("blogofile")
'0.7.1'
まとめ
- 実行時にパッケージのバージョンを取得するには
pkg_resources.get_distribution(パッケージ名).versionを使う。 - 引数にはimport名ではなく、PyPI上の配布名を指定する必要がある。
- Python 3.8以降では
importlib.metadata.version()を利用するのも有効な選択肢。
-
PythonとTensorFlowでモデルの予測結果を確認する方法
TensorFlowでは、「predict」メソッドとNumPyパッケージに含まれる「argmax」メソッドを組み合わせることで、モデルの予測結果を簡単に確認できます。TensorFlowと転移学習の基礎知識少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNを活用することで、高精度な画像認識などの学習モデルを構築できます。画像分類における転移学習(Transfer Learning)の基本的な考え方は、「大規模で汎用的なデータセットで訓練されたモデルは、視覚世界における汎用モデルとして
-
TensorFlowとPythonで画像分類の予測結果を確認・可視化する方法
TensorFlowでは、「matplotlib」ライブラリの「imshow」メソッドを使ってImageNetによる予測結果を可視化することで、予測を簡単に確認できます。本記事では、その具体的な手順と背景となる概念について解説します。 畳み込みニューラルネットワーク(CNN)とは 少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNを活用することで、画像認識に強い高性能な学習モデルを構築することが可能です。 転移学習の基本的な考え方 画像分類における転移学習(Transfer Le