web-dev-qa-db-ja.com

gitリポジトリからpip-installするときに#Egg = fooになる理由

Gitリポジトリからインストールするために「pip install -e ...」を実行するとき、#Egg = somenameを指定するか、pipのエラーが表示されます。例えば:

pip install -e git://github.com/hiidef/oauth2app.git#Egg=oauth2app

この「卵」文字列の意味は何ですか?

77
Lorin Hochstein

per pip install -h "Egg"文字列は、インストールの一部としてチェックアウトされるディレクトリです

28
Will Ayd

#Egg = Packageを含めて、pipがそのURLで何を期待するのかを知る必要があります。 https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support を参照してください

卵の詳細

7
Skylar Saveland

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support 言う:

URLサフィックス「Egg =-」の「プロジェクト名」コンポーネントは、pipが依存関係ロジックで使用し、pipをダウンロードしてメタデータを分析する前にプロジェクトを識別します。 Egg名のオプションの「バージョン」コンポーネントは機能的に重要ではありません。どのバージョンが使用されているかについて、人間が判読できる手掛かりを提供するだけです。 setup.pyがプロジェクトのルートにないプロジェクトの場合、「サブディレクトリ」コンポーネントが使用されます。 「サブディレクトリ」コンポーネントの値は、プロジェクトのルートからsetup.pyが配置されている場所までのパスである必要があります。

このことから、私はEgg値が依存関係のチェックにのみ使用されると推測します。したがって、慣例により、パッケージ名(つまり、some-pypi-package-name)含まれるフォルダー(つまり、some_pypi_package_name

3
Mario

卵はただ バンドルされたpythonコード 。git urlでは、卵はプロジェクト名です。 VCSサポート

通常、Pypiからpythonパッケージをインストールするため、パッケージ名とバージョンのみを指定します(または、指定しない場合は最新バージョンと見なします)。Pypiは必要なEggとpipを検索しますpip install celeryは公開された最新のEggをインストールし、pip install celery[redis]は同じセロリパッケージを含む別のEggをインストールし、セロリのセットアップでredisの依存関係としてリストされたパッケージから最新のeggもインストールします。 .py。

Gitおよびgitlabパスでは、/{user|group}/{repository}.git@{tag}#Egg={package-name}を指定します。 #Egg=celery#Egg=celery[redis]には違いがありますが、両方とも同じソースコードからのものです。

「タグ」は、実際のタグに加えて、ブランチまたはコミットハッシュにすることもできます。指定しない場合、masterと見なされます。

たとえば、git+https://github.com/celery/celery.git#Egg=celery==4.3.0はmasterブランチをチェックアウトしてインストールします。バージョン番号を指定した場合でも、インストールでは考慮されません。 バージョン番号IS IGNORED

Gitまたは他のVCS URLを介してインストールする場合、必要なバージョンのタグまたはハッシュを検索する必要があります。たとえば、git+https://github.com/celery/[email protected]#Egg=celeryは、「v4.3.0」とタグ付けされたコミットをチェックアウトし、そのソースコードからパッケージをインストールします。メンテナーがそれらのリポジトリにひどく誤ってタグ付けしなかったと仮定すると、あなたはそのように望むバージョンを得ることができます。

1
mehtunguh