非公開リポジトリのパッケージをインストールするのは難しい
自社のプライベートプロジェクトを別のプロジェクトから利用したい場合、簡単にpipやeasy_installでインストールできず困ることがある。
例えば
https://github.com/oyakata/foo
https://github.com/oyakata/bar
と2つのプロジェクトをプライベートにして、barからfooをインストールしようとすると結構難しい。
一番確実な方法はfooをcloneしてfooのsetup.py developを実行することだろう(以下)
$ git clone https://github.com/oyakata/bar.git
$ cd bar
$ virtualenv .
$ . ./bin/activate
(bar) $ pushd ..
(bar) $ git clone clone https://github.com/oyakata/foo.git
(bar) $ cd foo
(bar) $ python setup.py develop
(この方法は「確実」であるものの「簡単」ではない)
httpsのURLを指定すると認証を手で入力しなければならず不便
リポジトリが公開だったらpipでいとも簡単にインストールできるのだが、それがかなわない。
(以下のように)
(bar) $ pip install git+https://github.com/oyakata/foo
上記コマンドを実行すると、fooが非公開リポジトリの場合はIDとパスワードを都度手で入力しなければならず、自動デプロイなどにそぐわない。
これがsshのURLで利用できればGithubに公開鍵を登録しておくだけで認証が通って楽なのだが・・
sshのURLも実は指定できる
実はsshのURLもpipの引数に指定できる。
(bar) $ pip install git+ssh://git@github.com/oyakata/foo.git
やりたかったことはこれなのだ。
まとめ
httpsのURLを使う場合は
pip install git+https://github.com/oyakata/foo
sshのURLを使う場合は
pip install git+ssh://git@github.com/oyakata/foo.git
これでpipコマンドを実行してパッケージをインストールすることができるようにはなった。
だが、setup.pyを自分で書いて依存パッケージを管理しようとすると、他にも覚えることが増える。
(つづく)