Eu tenho linhas em minha saída de congelamento de pip como:
-e [email protected]:widgets.git@3bdaf7d07c44a87c38beb1e8abd163a7edf99adc#egg=widgets
-e [email protected]:[email protected]#egg=gadgets
Quando chega a hora de instalar usando pip install -r requirements.txt
, parece que o pip identifica incorretamente example.com:[email protected]
como a URL completa do repositório git quando na verdade deveria ser example.com:gadgets.git
e então deveria verifique o commit 3bda ... 99adc.
Se eu tentar instalar usando a saída de congelamento de pip, por exemplo,
pip install -e [email protected]:[email protected]#egg=gadgets
Recebo o mesmo erro.
Tudo isso usando o pip 1.5.4
Observe que com as seguintes alterações ele funciona corretamente:
pip install -e [email protected]:/path/to/project/[email protected]#egg=project
ou
pip install -e [email protected]:project.git#egg=project
Embora no último, obviamente, ele irá puxar apenas o commit atual e não aquele especificado em 3bdaf ...
Além disso, por razões que não entendo, _funciona_ para solicitações ao github.
Isso é,
pip install -e [email protected]:JordanReiter/[email protected]#egg=github_project
trabalho.
Isso é semelhante a # 6293. O analisador (baseado em stdlib urlsplit
tem problemas para identificar a parte do caminho da URL quando ele não contém /
todo, e identifica a coisa toda após +
como netloc
. A variante sem rotação funciona totalmente por acidente porque netloc
e path
são posteriormente unidos e passados para o Git (que faz a coisa certa automaticamente).
As discussões em # 6293 parecem favorecer a eliminação total do suporte a URL no estilo SCP, então a melhor solução aqui seria antes de pip freeze
cuspir git+ssh://
URLs em vez disso.
Fechando porque propomos a remoção do formulário git+git@
em # 7554.