setuptoolsでレポジトリ指定のパッケージがインストールできない

具体的な状況は、

  1. 自前のpythonパッケージhogeGitHubのレポジトリに作っていて、それに依存する別のパッケージを作りたい
  2. 以下のようなsetup.cfgを書いた
install_requires =
  hoge==0.0.1
dependency_links =
  git+ssh://git@github.com/username/hoge.git#egg=hoge

このとき、$ python setup.py installを実行すると、setuptoolsはdependency_links に書いた自前のGitHubレポジトリではなく、PyPIhogeパッケージを探しに行ってしまう。PyPIに登録していない場合は当然エラーとなる。

原因はinstall_requiresではバージョン指定しているのに、dependency_linksではバージョン指定していないこと。

install_requires =
  hoge
dependency_links =
  git+ssh://git@github.com/username/hoge.git#egg=hoge

のように前者のバージョン指定を消すか、

install_requires =
  hoge==0.0.1
dependency_links =
  git+ssh://git@github.com/username/hoge.git#egg=hoge-0.0.1

のように後者のバージョン指定を与えると、正しくGitHubレポジトリを探しにいくようになる。