web-dev-qa-db-ja.com

直接のgithubソースをRequirements.txtに記述する方法

コマンドを使用してライブラリをインストールしました

pip install git+git://github.com/mozilla/elasticutils.git

githubリポジトリから直接インストールします。これはうまく機能し、私は私のrequirements.txtでその依存関係を持ちたいです。 this のような他のチケットを見ましたが、それでも問題は解決しませんでした。私が何かを入れたら

-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev

requirements.txtファイルでは、pip install -r requirements.txtは次のような出力になります。

Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20))
  Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: )
No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))

要件ファイルの ドキュメント は、git+gitプロトコル指定子を使ったリンクについて言及していないので、おそらくこれはサポートされていません。

誰かが私の問題に対する解決策を持っていますか?

325
Alfe

編集可能なパッケージの構文requirements.txtで使用して、さまざまな VCSからパッケージをインポートできます(git、hg、 bzr、svn)

-e git://github.com/mozilla/elasticutils.git#Egg=elasticutils

また、特定のコミットを指すことも可能です。

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#Egg=elasticutils
260
stalk

通常、あなたのrequirements.txtファイルは次のようになります。

package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...

Githubリポジトリを指定するために、package-name==規約は必要ありません。

以下の例はGitHubリポジトリを使ってpackage-twoを更新します。 @#の間のテキストは、パッケージの詳細を示します。

コミットハッシュ(更新された41b95ecのコンテキストではrequirements.txt)を指定します。

package-one==1.9.4
git+git://github.com/path/to/package-two@41b95ec#Egg=package-two
package-three==1.0.1

ブランチ名(master)を指定してください。

git+git://github.com/path/to/package-two@master#Egg=package-two

タグを指定(0.1):

git+git://github.com/path/to/[email protected]#Egg=package-two

リリースを指定します(3.7.1)。

git+git://github.com/path/to/package-two@releases/tag/v3.7.1#Egg=package-two

#Egg=package-twoはここでのコメントではないことに注意してください、それは 明示的にパッケージ名を述べることです

このブログ記事 では、このトピックについてさらに議論があります。

249
YPCrumble

requirements.txtでは、pip 7.0の時点でgitリポジトリ内のパッケージへの依存関係を指定するための以下の方法が可能です。1

[-e] git+git://git.myproject.org/SomeProject#Egg=SomeProject
[-e] git+https://git.myproject.org/SomeProject#Egg=SomeProject
[-e] git+ssh://git.myproject.org/SomeProject#Egg=SomeProject
-e [email protected]:SomeProject#Egg=SomeProject

Githubのためにそれはあなたがすることができることを意味します(省略された-eに注意してください):

git+git://github.com/mozilla/elasticutils.git#Egg=elasticutils

なぜ追加の回答が必要なのですか?
他の回答で-eフラグが多少混乱しましたので、ここで私の説明をします。

-eまたは--editableフラグは、パッケージが<venv path>/src/SomeProjectにインストールされているため、他の方法では配置されるはずの<venv path>/lib/pythonX.X/site-packages/SomeProjectには含まれていないことを意味します。2

ドキュメント

154
qff

まず、git+gitまたはgit+httpsを使ってインストールします。 kronokプロジェクトのbrabeionのブランチのインストール例

pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#Egg=brabeion

次に、pip freeze > requirements.txtを使ってrequirements.txtで正しいことを見つけましょう。この場合、あなたは得るでしょう

-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#Egg=brabeion-master

第三に、結果をテストします。

pip uninstall brabeion
pip install -r requirements.txt
72
osa

Pip v1.5以降、(2014年1月1日リリース: CHANGELOGPR )あなたのモジュールを入れるためにgitリポジトリのサブディレクトリを指定することもできます。構文は次のようになります。

pip install -e git+https://git.repo/some_repo.git#Egg=my_subdir_pkg&subdirectory=my_subdir_pkg # install a python package from a repo subdirectory

注:pipモジュールの作成者として、できれば理想的にはモジュールをそれ自身のトップレベルのリポジトリに公開したいでしょう。それでも、この機能はサブディレクトリにpythonモジュールを含む既存のリポジトリには役に立ちます。それらがpypiにも公開されていない場合、あなたはこの方法でそれらをインストールすることを余儀なくされるかもしれません。

15
TrinitronX