8

開発上の理由から、githubリポジトリ(pypiではない)でホストされている別のアプリに依存するPythonアプリを作成しています。

それらを呼びましょう:

  • 書かれているアプリ:AppA
  • githubのアプリ:AppB

アプリAでは、setup.pyは次のようになります。

# coding=utf-8
import sys
try:
    from setuptools import setup, find_packages
except ImportError:
    import distribute_setup
    distribute_setup.use_setuptools()
    from setuptools import setup, find_packages

setup(
    ...
    install_requires=[
        # other requirements that install correctly
        'app_b==0.1.1'
    ],
    dependency_links=[
        'git+https://github.com/user/app_b.git@0.1.1#egg=app_b-0.1.1'
    ]
)

現在、プッシュするたびAppAにビルドされJenkins CIており、次のエラーがスローされるために失敗します。

error: Download error for git+https://github.com/user/app_b.git@0.1.1: unknown url type: git+https

面白いことに、これはJenkinsでのみ発生し、私のコンピューターでは完全に機能します。githubが提供する他のSSHURLの両方を試しましたが、それらはダウンロードの対象とは見なされていません。

現在、AppAはJenkinsによってビルドされているプロジェクトの要件ファイルに含まれているため、依存関係を手動でインストールすることpip install AppA pip install AppBはできません。依存関係はに含まれることで自動的にインストールされrequirements.txtます。

githubのURLを使用してpipとgitを連携させる方法はありますか?

どんな助けでも大歓迎です:)

前もって感謝します!

4

3 に答える 3

12

問題はではなく、pipにありsetuptoolsます。setup()呼び出しの責任はsetuptoolsパッケージ(setuptoolsまたはdistributeプロジェクト)です。

その種類のURLを理解していないsetuptoolsか、理解していません。彼らはtarballs/zipファイルを理解しています。distribute

GithubのダウンロードURL(通常はzipファイル)をポイントしてみてください。

エントリdependency_linksはおそらく次のようになります。

dependency_links=[
    'https://github.com/user/app_b/archive/0.1.1.zip#egg=app_b-0.1.1'
]

詳細については、http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypiをご覧ください。

于 2013-02-18T01:11:47.910 に答える
2

pipドキュメントから-

pip currently supports cloning over git, git+http and git+ssh:

git+git://git.myproject.org/MyProject#egg=MyProject
git+http://git.myproject.org/MyProject#egg=MyProject
git+ssh://git.myproject.org/MyProject#egg=MyProject

に置き換えgit+httpsてみてくださいgit+git

于 2013-02-06T20:18:32.227 に答える
0

2019年も同じ問題が発生しましたが、理由が異なります。依存関係リンクはpipではサポートされなくなりました(pip> = 20.0.0でテスト済み)。私の場合、install_requirementsを使用し、直接参照を定義してこの問題を解決しました(pip手動直接参照を参照)。

...
install_requirements = [
    <dependencyname> @ git+<url of dependency repository>@<branchname or tag>
]

詳細については、https://gitlab.rhrk.uni-kl.de/scheliga/thepackageでthepackageという名前のpuplicサンプルリポジトリを作成しました。

于 2020-02-09T23:22:09.417 に答える