1. ホーム
  2. python

[解決済み] どうすれば setuptools に PyPI にないパッケージをインストールさせることができますか?

2022-04-28 06:30:51

質問

setuptoolsとvirtualenvを使い始めたところです。私のパッケージは最新のpython-gearmanを必要とし、それはGitHubからしか入手できません。PyPIにあるpython-gearmanのバージョンは古いものです。Githubのソースはsetuptoolsと互換性があり、つまりsetup.pyなどがあります。PyPIで探して古いものをインストールする代わりに、setuptoolsに新しいバージョンをダウンロードさせてインストールさせる方法はありますか?

参考までに、新しいpython-gearmanは http://github.com/mtai/python-gearman

解決方法は?

キーは、パッケージをダウンロードすることができる場所をeasy_installに伝えることです。 この特定のケースでは、それはURLで見つけることができます。 http://github.com/mtai/python-gearman/tarball/master . しかし、easy_install は URL を見ただけでは何を取得するのか分からないため、そのリンク自体は機能しません。

に変更することで http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta 代わりに、easy_install はパッケージ名とそのバージョンを識別できるようになります。

最後のステップは、パッケージの dependency_links に URL を追加することです、例えば。

setup(
   ...
   dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta']
)

もし依存関係に "gearman>=2.0.0beta" を指定すれば、あなたのパッケージをインストールするときに easy_install はその URL からダウンロードできる "gearman 2.0.0beta" を発見して PyPI 上のものよりも喜んでそれを選びます。

(通常、このようなことは自分のPyPIページにダウンロード可能なソースへのリンクを貼ることで行われます。この場合、gearmanパッケージの作者が上記のようなリンクを貼っていれば、すでに設定されているはずです。 一般的に、人々は 'myproject-dev' で開発版をマークし、人々は 'myproject>=somever,==dev' という要件を使うので、もし somever 以上のパッケージがなければ easy_install はリリースをチェックアウトまたはダウンロードしようとします)。

を指定する必要があります。 --process-dependency-links を使用する場合 pip . なお、依存関係リンクの処理は非推奨となっており、将来のリリースで削除される予定です。