python でバージョンを確認したいときは -v
ではなく -V
を使おう
今朝、python のバージョンを確認したいだけなのに大量に謎のログが出力されてしまう問題で悩んでいた
例えばこんな感じ
% python -v import _frozen_importlib # frozen import _imp # builtin import '_thread' # <class '_frozen_importlib.BuiltinImporter'> import '_warnings' # <class '_frozen_importlib.BuiltinImporter'> import '_weakref' # <class '_frozen_importlib.BuiltinImporter'> import '_io' # <class '_frozen_importlib.BuiltinImporter'> import 'marshal' # <class '_frozen_importlib.BuiltinImporter'> import 'posix' # <class '_frozen_importlib.BuiltinImporter'> import '_frozen_importlib_external' # <class '_frozen_importlib.FrozenImporter'> # installing zipimport hook ...
みた感じ別にエラーになっているわけではなさそうだったが、例えば以下のようなシェルスクリプトを書いていると、この部分で Python のプロンプトが開かれてしまうため処理が途中で止まってしまう
python -v | grep ${PYTHON_VERSION} > /dev/null || pyenv install ${PYTHON_VERSION} && pyenv global ${PYTHON_VERSION}
なんでだろうと困っていたら、ひょっとしたらこれは verbose
の v なのではないかということに思い当たった
念の為ヘルプを確認してみたところあたり
%python --help ... -v : verbose (trace import statements); also PYTHONVERBOSE=x can be supplied multiple times to increase verbosity -V : print the Python version number and exit (also --version) when given twice, print more information about the build ...
python -v
の代わりに python -V
を使ってあげたら解決
ちなみに ruby だと -V
オプションはなくて -v
オプションでバージョンを見る仕様なのでややこしい
ケースバイケースということか