git-remote-codecommitでリポジトリをクローン出来ないとき

fatal: unable to find remote helper for ‘codecommit’

AWS CodeCommit上のリポジトリをgit-remote-codecommitを使用してローカルにクローンする際エラーとなってしまったので解決手順をまとめます。

環境: MacOS Catalina 10.15.7, aws-cli 1.18.185, git version 2.24.3, Python 3.8.5

解決方法: デフォルトのPython(pip)を2系から3系にする

git-remote-codecommitを使用したリポジトリクローンのコマンド

git clone codecommit://プロファイル名@CodeCommitリポジトリ名

(リポジトリ参照のために名前付きプロファイルをaws-cliで設定済み)

発生したエラー
「fatal: unable to find remote helper for ‘codecommit’」

Pythonのバージョン確認

git-remote-codecommitはPythonのパッケージマネージャーpipを使用してインストールしているので実行時のPythonのバージョンが関係していたようです。

ローカル環境へのPythonのインストールについては本記事では割愛しますが、
MacにデフォルトでインストールされているPythonバージョン2系と自前でインストールした3系が環境に混在している状態でしたのでデフォルトでの参照が3系となるよう環境を整備しました。

(以降、ターミナルからコマンドを実行)

Pythonバージョン確認コマンド

$ python -V

こちらで表示されるデフォルトでのバージョンが2.7でした。

(この時点の3系のバージョンを確認コマンド)

$ python3 -V

デフォルトのPythonを3系にする

$ ln -nfs /usr/local/bin/python3 /usr/local/bin/python

python3実体へのシンボリックリンクを作成することでデフォルトを3系にします。

pipも3系のものを使用できるようにする

$ pip -V
pip 20.1.1 from /Library/Python/2.7/site-packages/pip (python 2.7)

上記のようにPython本体同様、パッケージマネージャーのpipも2系に紐づくものがデフォルトになっていましたので3系配下のpipをデフォルトに変更します。

バージョン2系のpipをアンインストールする

下記の3つのコマンドを順番に実行します。

$ sudo easy_install -mxN pip

$ sudo rm -rf /Library/Python/2.7/site-packages/pip-20.X-py2.7.egg
$ sudo rm -rf /usr/local/bin/pip*

※ひとつめのコマンド実行時に表示される
Using /Library/Python/2.7/site-packages/pip-20.X
のバージョンを指定して実行します。

ここまでで2系のpipのアンインストールが完了です。

pipのパスを通す

1. バージョン3系のpipの場所は以下のコマンドで確認出来ました。

$ python3 -m pip -V
pip 20.3 from /Users/ken/Library/Python/3.8/lib/python/site-packages/pip (python 3.8)

2. pipからコマンドを実行できるように確認したパスを通します。
$ echo ‘export PATH=”$HOME/Library/Python/3.8/bin:$PATH”‘ >> ~/.bash_profile

3. 反映 (もしくはターミナル再起動)

$ source ~/.bash_profile

4. pipの情報が先ほどと同様に確認できればOK!

$ pip -V
git-remote-codecommitを再インストール

git-remote-codecommitは2系のpipと一緒に削除されたので、
3系のpip追加ライブラリとして再インストールしました。

$ pip install git-remote-codecommit

リポジトリクローンを再度実行

CodeCommitリポジトリからのgit cloneが無事成功出来ました!

git clone codecommit://プロファイル名@CodeCommitリポジトリ名
Cloning into 'repository_name'...
remote: Counting objects: 12, done.
Unpacking objects: 100% (12/12), done.

参考
MacBook(macOS)にPython3環境を導入してデフォルトに設定する | つくみ島だより

git-remote-codecommit および AWS CodeCommit のトラブルシューティング – AWS CodeCommit

git-remote-codecommitでAmazon CodeCommitリポジトリへ接続する | Developers.IO

Follow me!