❓
CodeCatalyst開発環境にcfn-lintを入れようとして躓いたけど何とかなった話
Python環境わからん。
TL;DR
python3
がポイント。
python3 -m pip install cfn-lint
あったこと
CodeCatalyst開発環境、便利ですよね。
CloudFormation開発するときにはCloudFormation Linter(cfn-lint)があるともっと便利になるためインストールしましょう!
$ which python
alias python='python3.9'
/usr/local/bin/python3.9
$ which python3
/usr/bin/python3
$ python -V
Python 3.9.19
$ python3 -V
Python 3.9.16
▲まずはPython環境を確認。2種類存在していて、python
(または python3.9
)と python3
では違うPythonバージョンを指すらしい
$ which pip
alias pip='pip3.9'
~/.local/bin/pip3.9
$ which pip3
~/.local/bin/pip3
$ pip -V
pip 24.1 from /home/mde-user/.local/lib/python3.9/site-packages/pip (python 3.9)
$ pip3 -V
pip 24.1 from /home/mde-user/.local/lib/python3.9/site-packages/pip (python 3.9)
$ python -m pip -V
pip 24.1 from /home/mde-user/.local/lib/python3.9/site-packages/pip (python 3.9)
$ python3 -m pip -V
pip 24.1 from /home/mde-user/.local/lib/python3.9/site-packages/pip (python 3.9)
▲ pip
と pip3
は同じ……ってこと?
$ pip install cfn-lint
...
Successfully installed cfn-lint-1.3.3
$ which cfn-lint
~/.local/bin/cfn-lint
$ cfn-lint -v
...
ModuleNotFoundError: No module named '_bz2'
$ pip uninstall cfn-lint
...
Successfully uninstalled cfn-lint-1.3.3
$ pip3 install cfn-lint
...
Successfully installed cfn-lint-1.3.3
$ which cfn-lint
~/.local/bin/cfn-lint
$ cfn-lint -v
...
ModuleNotFoundError: No module named '_bz2'
$ pip3 uninstall cfn-lint
...
Successfully uninstalled cfn-lint-1.3.3
$ python -m pip install cfn-lint
...
Successfully installed cfn-lint-1.3.3
$ which cfn-lint
~/.local/bin/cfn-lint
$ cfn-lint -v
...
ModuleNotFoundError: No module named '_bz2'
$ python -m pip uninstall cfn-lint
...
Successfully uninstalled cfn-lint-1.3.3
▲ pip install cfn-lint
、pip3 install cfn-lint
、python -m pip install cfn-lint
でインストールした場合は ModuleNotFoundError: No module named '_bz2'
エラーでcfn-lintが使えない
$ python3 -m pip install cfn-lint
...
Successfully installed cfn-lint-1.3.3
$ which cfn-lint
~/.local/bin/cfn-lint
$ cfn-lint -v
cfn-lint 1.3.3
▲ python3 -m pip install cfn-lint
でインストールした場合はcfn-lintが使える!
$ python -c "import _bz2"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named '_bz2'
$ python3 -c "import _bz2"
$
▲ python
(3.9.19)には _bz2
が入っていないが、python3
(3.9.16)には入っている(?)という違いが影響しているっぽい
なお、開発環境のOSバージョンはAmazon Linux 2023.4.20240611でした。pipは自分でアップグレードしたため、24.1(最新)になっています。
あとがき
解決はできたものの、Python環境のことはよく分かりませんでした。
CodeCatalystにおいて、あるいは、2種類のPython3が存在する環境において、どちらを使用するべきかといった知見のある方がいれば教えていただけると嬉しいです。
Discussion