NumPy:【versionコマンド】を詳しく説明
サマリ
- np.version
- NumPyのバージョンが確認できる
- .full_version、.short_version、.version、.git_revisionの4つのメソッドがある
- バージョン情報表示元のプログラムを説明
- version.py
- _version.py
- get_versions()
前提
- 特になし
サンプルコード
各種バージョン取得コマンド実行例
import numpy as np
print(np.version.full_version)
print(np.version.short_version)
print(np.version.version)
print(np.version.git_revision)
1.21.2 1.21.2 1.21.2 2fe48d2d98a85c8ea3f3d5caffd952ea69e99335
- 表示結果は上記の通り
- 少し考察した
- 環境ごとにバージョンは異なる
- 現在のバージョンを何かから読み取って表示している
- Pythonの動作を次項で確認する
動作の仕組みを調べてみた
指定できる引数は何がある?
引数なしで実行したら…
np.version
<module 'numpy.version' from '/home/futa/miniconda3/lib/python3.9/site-packages/numpy/version.py'>
- /home/futa/miniconda3/lib/python3.9/site-packages/numpy/version.py
- version.pyにあるらしい
- 直接見てみよう
version.pyを直接開く
cat /home/futa/miniconda3/lib/python3.9/site-packages/numpy/version.py
#Windowsならファイル名を指定して実行
#c:\users\futa4\anaconda3\lib\site-packages\numpy\version.py
from ._version import get_versions
__ALL__ = ['version', 'full_version', 'git_revision', 'release']
vinfo = get_versions()
version: str = vinfo["version"]
full_version: str = vinfo['version']
git_revision: str = vinfo['full-revisionid']
release = 'dev0' not in version and '+' not in version
short_version: str = vinfo['version'].split("+")[0]
del get_versions, vinfo
###windowsのipythonの結果###
# THIS FILE IS GENERATED FROM NUMPY SETUP.PY
#
# To compare versions robustly, use `numpy.lib.NumpyVersion`
short_version = '1.19.5'
version = '1.19.5'
full_version = '1.19.5'
git_revision = '8f4b73a0d04f7bebb06a154b43e5ef5b5980052f'
release = True
if not release:
version = full_version
- 使える引数はこの4つみたい
- version
- full_version
- git_revision
- short_version
- ここ気になるな…
- from ._version import get_versions
- 調べよう
get_versionsを調べたら
概要
- _version.pyで定義されている関数(def)
- version.pyで読み込んで使用されている
- from ._version import get_versions
- vinfo = get_versions()
_version.pyを直接開く
cat /home/futa/miniconda3/lib/python3.9/site-packages/numpy/_version.py
# This file was generated by 'versioneer.py' (0.19) from
# revision-control system data, or from the parent directory name of an
# unpacked source archive. Distribution tarballs contain a pre-generated copy
# of this file.
import json
version_json = '''
{
"date": "2021-08-15T12:15:47-0600",
"dirty": false,
"error": null,
"full-revisionid": "2fe48d2d98a85c8ea3f3d5caffd952ea69e99335",
"version": "1.21.2"
}
''' # END VERSION_JSON
def get_versions():
return json.loads(version_json)
ipythonでget_versionsをimportしたログ
import sys, os
sys.path.append('/home/futa/miniconda3/lib/python3.9/site-packages/numpy/')
from _version import get_versions
vinfo = get_versions()
#タイプ確認
print(type(vinfo))
#内容確認
print(vinfo)
#バージョン取り出し
print(vinfo['version'])
#outに出力
vinfo
<class 'dict'>
{'date': '2021-08-15T12:15:47-0600', 'dirty': False, 'error': None, 'full-revisionid': '2fe48d2d98a85c8ea3f3d5caffd952ea69e99335', 'version': '1.21.2'}
1.21.2
Out[]:
{'date': '2021-08-15T12:15:47-0600',
'dirty': False,
'error': None,
'full-revisionid': '2fe48d2d98a85c8ea3f3d5caffd952ea69e99335',
'version': '1.21.2'}
- sys.path.appendでパスに追加
- vinfoに入力した結果が取得できている
