ピップフリーズ出力に次のような行があります。
-e [email protected]:widgets.git@3bdaf7d07c44a87c38beb1e8abd163a7edf99adc#egg=widgets
-e [email protected]:[email protected]#egg=gadgets
pip install -r requirements.txt
を使用してインストールする場合、pipはexample.com:[email protected]
をgitリポジトリの完全なURLとして誤って識別しているように見えますが、実際にはexample.com:gadgets.git
である必要があります。 3bda ... 99adcコミットを確認してください。
ピップフリーズ出力を使用してインストールしようとすると、たとえば
pip install -e [email protected]:[email protected]#egg=gadgets
同じエラーが発生します。
これはすべてpip1.5.4を使用しています
次の変更により、正しく機能することに注意してください。
pip install -e [email protected]:/path/to/project/[email protected]#egg=project
または
pip install -e [email protected]:project.git#egg=project
後者では、明らかに現在のコミットのみをプルアップし、3bdafで指定されたコミットはプルアップしません…
また、私が理解していない理由で、githubへのリクエストに対しては機能します。
あれは、
pip install -e [email protected]:JordanReiter/[email protected]#egg=github_project
動作します。
これは#6293に似ています。 STDLIBに基づいて、パーサー( urlsplit
問題はそれが全く含まれていないとき、URLのパス部分を特定している/
すべてで、そして後に全部を識別+
のようにnetloc
。 netloc
とpath
は後で結合され、Gitに渡されるため(これは自動的に正しいことを行います)、revのないバリアントは完全に偶然に機能します。
#6293での議論は、SCPスタイルのURLサポートを完全に削除することを支持しているようです。したがって、ここでのより良い解決策は、代わりにgit+ssh://
URLを吐き出すpip freeze
前になります。
#7554のgit+git@
フォームを削除することを提案しているので終了します。