619

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

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

Github リポジトリから直接インストールします。これは正常に機能し、その依存関係を自分のrequirements.txt. このような他のチケットを見てきましたが、問題は解決しませんでした。私が何かを入れたら

-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プロトコル指定子を使用したリンクについては言及されていないため、これはサポートされていない可能性があります。

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

4

10 に答える 10

700

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

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

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

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

コミット ハッシュを指定41b95ecします ( updated のコンテキストでrequirements.txt):

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

ブランチ名を指定 ( master):

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

タグを指定 ( 0.1):

git+https://github.com/path/to/package-two@0.1#egg=package-two

リリース指定 ( 3.7.1):

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

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

このブログ投稿では、このトピックについてさらに議論しています。

于 2016-03-14T21:17:36.730 に答える
380

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

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

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

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils
于 2013-05-16T10:25:26.280 に答える
199

requirements.txtpip 7.0 以降、 gitリポジトリ内のパッケージへの依存関係を次のように指定できます。

[-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 git+git@git.myproject.org:SomeProject#egg=SomeProject (deprecated as of Jan 2020)

Github の場合、次のことができます (省略されていることに注意してください-e)。

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

なぜ余分な答えですか?他の回答
のフラグに多少混乱したので、ここに私の説明があります:-e

-eorフラグは--editable、パッケージがインストールされていることを意味し、そうでなければ配置される<venv path>/src/SomeProject深く埋もれた場所にはありません。 2<venv path>/lib/pythonX.X/site-packages/SomeProject

ドキュメンテーション

于 2015-12-29T20:01:56.520 に答える
93

まず、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

3 番目に、結果をテストします。

pip uninstall brabeion
pip install -r requirements.txt
于 2013-12-09T00:07:54.817 に答える
20

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 にも公開されていない場合は、この方法でインストールする必要があるかもしれません。

于 2014-10-03T07:09:14.850 に答える
4

これも有効な形式のようです:

gym-tictactoe @ git+https://github.com/haje01/gym-tictactoe.git@84e22fc28fe192ba0040bdd56a697f63d3d4a3d5

を実行し、 をpip install "git+https://github.com/haje01/gym-tictactoe.git"実行してインストールされたものpip freezeを確認すると、この形式で記述されたパッケージが表示され、requirements.txt にコピーして貼り付けることができます。

于 2021-03-03T11:47:27.033 に答える
3

pip3(Ubuntu 18.04のパッケージマネージャーによってインストールされたv9.0.1)を実際にインストールするように指示したものを実際にインストールするのはちょっと難しいことがわかりました。この問題に遭遇した人の時間を節約するために、この回答を投稿しています。

これを requirements.txt ファイルに入れるのに失敗しました:

git+git://github.com/myname/myrepo.git@my-branch#egg=eggname

「失敗」とは、Git からコードをダウンロードしている間に、そのブランチのリポジトリにあるコードではなく、PyPi にある元のバージョンのコードをインストールしてしまったことを意味します。

ただし、ブランチ名の代わりにコミットをインストールすると機能します。

git+git://github.com/myname/myrepo.git@d27d07c9e862feb939e56d0df19d5733ea7b4f4d#egg=eggname
于 2019-12-05T02:33:59.247 に答える