pipインストールがgithubから機能するように構成する


226

githubでpipを使用して、プライベートパッケージを本番サーバーにインストールします。この質問は、インストールを成功させるためにgithubリポジトリに何が必要かに関するものです。

次のコマンドラインを想定します(これは問題なく認証され、インストールを試みます)。

pip install git+ssh://git@github.com/BlahCo/search/tree/prod_release_branch/ProductName

ProductNameには何が必要ですか?これは、sdistオプションを使用してsetup.pyを実行した後、通常はtarファイルに含まれる内容ですか、それとも実際のtar.gzファイルですか、それとも何か他のものですか?

いくつかのバリエーションを試してみましたが、機能させることができないので、ここで質問します。助けてくれてありがとう。

回答:


290

setup.pyファイルが入ったpythonパッケージ全体が必要です。

名前の付いたパッケージfooは次のようになります。

foo # the installable package
├── foo
   ├── __init__.py
   └── bar.py
└── setup.py

そしてgithubから次のようにインストールします:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

詳しくはhttps://pip.pypa.io/en/stable/reference/pip_install/#vcs-supportをご覧ください


3
上記の作品、どうもありがとうございました。しかし、リポジトリ内のサブディレクトリにリリースがある場合はどうなりますか?foo.gitではなく、foo / releases / ProductVerを探しています。それは可能ですか、それが可能であればどうすればよいですか?助けてくれてありがとう!
ccgillett

4
いいえ、できません。pipは、少なくともgitでは、ルートリポジトリディレクトリからのみインストールします。subversionの動作がわからない...
Hugo Tavares

3
SSHとプライベートリポジトリでこれ
Jonathan

-eオプション(編集可能モード)をpipに渡さなかったのはなぜですか?
Amelio Vazquez-Reina

14
これが新しいURLスキームです:pip install git+https://github.com/pypa/pip.git 出典:pip Github repo
aboutaaron 2013

111

githubリポジトリからインストールしなければならないときに同様の問題がありましたが、gitなどをインストールしたくありませんでした。

それを行う簡単な方法は、パッケージのzipアーカイブを使用することです。/zipball/masterリポジトリURLに追加:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

このようにして、githubソースリポジトリでpipを機能させます。


2
これは、Windowsでも機能する唯一の回答です
divenex '30年

プライベートリポジトリでこれを行うにはどうすればよいですか?(質問のとおり)
ロドリゴE.プリンシペ

29

requirements.txtfile を使用する場合はgit、以下のエントリのように、マスターブランチを匿名でフェッチする必要がありますrequirements.txt

通常のインストールの場合:

git+git://github.com/celery/django-celery.git

編集可能な」インストールの場合:

-e git://github.com/celery/django-celery.git#egg=django-celery

編集可能モードでは、プロジェクトのソースコード./srcが現在のディレクトリにダウンロードされます。pip freezeパッケージの正しいgithubの場所を出力できます。


3
その卵の名前はどこから来たのですか?pipパッケージをgithub repoで置き換えた後、djangoでパッケージを読み込めません
holms

@holms Lookup name in setup.py
wieczorek1990

なに#egg=django-celery?それはプレースホルダーですか?
強化

@enchanceパッケージ名です。
wieczorek1990

13

他のプロジェクトを複製するのと同じ方法で、ターゲットリポジトリを複製します。

git clone git@github.com:myuser/foo.git

次に、開発モードでインストールします。

cd foo
pip install -e .

不要なものは何でも変更でき、fooパッケージを使用するすべてのコードは変更されたコードを使用します。

このソリューションには2つの利点があります。

  1. パッケージはホームプロジェクトディレクトリにインストールできます。
  2. パッケージには.gitdirが含まれているため、通常のGitリポジトリです。すぐにフォークにプッシュできます。

2
このソリューションが魔法であることを証明できます。私の場合、ハッキングしたかったpipので、pipリポジトリのクローンを作成し、virtualenvを作成してアクティブ化しましたpip install -e .。その後、pipvirtualenvで開発モードになりました!これはパッケージマネージャー自体でも機能することに感銘を受けました。
Radon Rosborough、

これは素晴らしい!この方法でインストールしてを実行するpip listと、問題のパッケージにGitブランチへの参照とインストール元の絶対パスが含まれていることに気付きました。それらへの参照は保持されますか、それともソースを削除できますか?
MadPhysicist 2017

0

Colabでこの方法を試すことができます

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.