80

私のsetup.pyにdependency_linksがあります:

...
dependency_links = ['http://github.com/robot-republic/python-s3/tarball/master.tar.gz#egg=python-s3'],
...

しかし、うまくいきません。ただし、 install_requires は正常に機能します。setup.py に必要な git リポジトリをセットアップする別の方法があるのではないでしょうか?

4

6 に答える 6

68

この答えは役立つはずです。#egg=python-s3一言で言えば、のように見えるようにバージョン(または「dev」)を指定する必要があります#egg=python-s3-1.0.0

@Cerinのコメントに基づく更新:

  • Pip 1.5.xには、依存関係リンクの処理を有効にするフラグがあります--process-dependency-links。以下の点に同意するため、テストは行っていません。
  • この議論は、pipに依存関係リンクを使用することは悪い習慣であることを示しているようです。この機能は非推奨になりましたが、現在はそうではありません。プライベートパッケージには有効なユースケースがあります。
于 2012-11-27T15:40:20.647 に答える
47

これは古い質問だと思いますが、私のようにここにいることに気付いた場合に備えて、これが私にとってうまくいきました。

他の GitHub (非 pypi) パッケージに依存する GitHub (pypi に登録されていない) にパッケージがあります。ピップでこれを正しく処理する方法を見つけようとして、途方もない時間を費やしました。ここで修正するために行ったことを含めます。

依存関係を requirements.txt ファイルに入れることは、依存関係を一覧表示するための推奨される方法です。ただし、セットアップで install_requires を入力する必要もあります。pip が GitHub から依存関係をインストールしたくないという障害に遭遇したのは、この段階でした。

この質問への回答を含むほとんどの場所では、セットアップのdependency_linksセクションに入力するように指示されています. ただし、install_requires フィールドに、dependency_links で参照されているパッケージの名前を入力する必要もあります。

たとえば、requirements.txt に次のものが含まれているとします。

somepackage==1.2.0
https://github.com/user/repo/tarball/master#egg=repo-1.0.0
anotherpackage==4.2.1

次に、セットアップ呼び出しは次のようになります。

setup(
    name='yourpackage',
    version='1.7.5',
    packages=[],
    url='',
    license='',
    author='',
    author_email='',
    description='',
    install_requires=[
        'somepackage==1.2.0',
        'repo==1.0.0',
        'anotherpackage==4.2.1'
    ],
    dependency_links=[
        'https://github.com/user/repo/tarball/master#egg=repo-1.0.0'
    ]
)

これで、パッケージが構成されました。インストールは次のタスクです。これは私が多くの時間を費やした場所です。dependency_links を指定しても明らかに何も起こらなかった理由がわかりませんでした。秘訣は、場合によっては、pip に allow-all-external (より具体的にすることができます) フラグを設定する必要があることです。例えば:

pip install git+https://github.com/user/anotherrepo.git
--process-dependency-links --allow-all-external

あなたは完了し、それは動作します!

免責事項:dependency_links とフラグ process-dependency-links と allow-all-external は非推奨であるため、すぐに削除されます。私が費やした時間の中で、より適切で好ましい方法を見つけることができず、それでも pip 機能は適切に機能しています。

于 2016-06-26T21:58:09.180 に答える