今川館

都内勤務の地味OLです

pipでGithubにssh接続して非公開リポジトリをインストールする

非公開リポジトリのパッケージをインストールするのは難しい

自社のプライベートプロジェクトを別のプロジェクトから利用したい場合、簡単に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を自分で書いて依存パッケージを管理しようとすると、他にも覚えることが増える。

(つづく)