1. ホーム
  2. python

[解決済み] Python setuptoolsです。install_requires の下にプライベートリポジトリをリストアップするにはどうしたらいいですか?

2023-01-17 22:25:10

質問

私は setup.py ファイルを作成しています。これは、GitHub のプライベートリポジトリに依存しているプロジェクトです。 ファイルの関連する部分は次のようになります。

from setuptools import setup
setup(name='my_project',
    ...,
    install_requires=[
        'public_package',
        'other_public_package',
        'private_repo_1',
        'private_repo_2',
    ],
    dependency_links=[
        'https://github.com/my_account/private_repo_1/master/tarball/',
        'https://github.com/my_account/private_repo_2/master/tarball/',
    ],
    ...,
)

私は setuptools の代わりに distutils というのは、後者は install_requiresdependency_links の引数を これ の答えになります。

上記の設定ファイルでは、プライベートリポジトリへのアクセスに404エラーで失敗します。GitHubはプライベートリポジトリに対する不正なリクエストに対して404を返すので、これは予想されることです。 しかし、どのようにすれば setuptools を認証させる方法がわかりません。

以下は、私が試したものです。

  1. 使用方法 git+ssh:// の代わりに https://dependency_links でレポをインストールする場合と同じように pip . これは setuptools がこのプロトコルを認識しないため ("unknown url type: git+ssh") 失敗します。 ドキュメントを配布する にはそうするべきだと書いてあります。 同上 git+httpsgit+http .

  2. https://<username>:<password>@github.com/... - のようにしても、404が表示されます。 (この方法は curl または wget のいずれかをコマンドラインから実行します。 curl -u <username> <repo_url> -O <output_file_name> は動作します)。

  3. setuptools (0.9.7) と virtualenv (1.10) を最新バージョンにアップグレードしました。 また、distributeのインストールも試しましたが この概要 には setuptools にマージされたと書いてあります。 いずれにせよ、ダメでした。

現在、私はちょうど setup.py はプライベートリポを別途ダウンロードしなければならないという警告を出力しています。 これは明らかに理想的ではありません。 何か明らかに見逃しているものがあるような気がしますが、それが何なのか思いつきません :)

答えのない重複した質問 ここで .

どのように解決するのですか?

pipでインストールするために、上記を実行させようとしたのですが、うまくいきませんでした。1]からは、理解できたのですが PEP508 規格を使用すべきであり、[2]からは実際に動作する例を取得しました(少なくとも私の場合)。

注意: これは pip 20.0.2Python 3.7.4

setup(
    name='<package>',
...
    install_requires=[
        '<normal_dependency>',
         # Private repository
        '<dependency_name> @ git+ssh://[email protected]/<user>/<repo_name>@<branch>',
         # Public repository
        '<dependency_name> @ git+https://github.com/<user>/<repo_name>@<branch>',
    ],
)

このようにパッケージを指定すると、インストールはうまくいきます。 -e を指定する必要はありません。 --process-dependency-links ).

参考文献 [1] https://github.com/pypa/pip/issues/4187 [2] https://github.com/pypa/pip/issues/5566