Ao tentar encontrar uma maneira leve de distribuir scripts Python dentro de uma organização, a situação proposta com pip conforme implícita nas mensagens de reprovação é absurda.
Você pode _facilmente_ distribuir um único pacote em um servidor git (algo que a maioria das organizações tem) ... mas você não pode distribuir facilmente um pacote que pode depender de alguns outros pacotes internos.
Se o pip remover o processamento de dependency_links, esse estilo de distribuição se tornará completamente impossível - o que para mim está em total contraste com algo como npm
que torna isso absurdamente fácil.
Claro, não deixe implícito - mas deve haver uma maneira fácil de enviar a um colega de trabalho um comando de linha única que irá instalar um pacote que tem um monte de outras dependências git.
A solução ideal seria uma forma de forçar o pip a processar o arquivo requirements.txt
de um repositório git, para que o repositório pudesse definir seus outros requisitos especificamente (já que isso é algo que uma biblioteca em um repositório git definitivamente faz).
Perfeito seria algo como:
pip install --follow-requirements git+http://my.internal.gitserver/internallibrary.git
Talvez forneça um prompt para os requisitos não confiáveis?
Não vamos remover links de dependência até que a substituição deles (que o PyPI entenda e possa garantir que você não carregue pacotes que dependem deles) seja implementada.
@dstufft O que é essa substituição?
Tenho dois pacotes PackageA e PackageB armazenados em repositórios Git privados e um aplicativo de aplicativo. O aplicativo depende do PackageA e o PackageA depende do PackageB. Não encontrei nenhuma maneira de instalar o PackageB automaticamente como uma dependência do PackageA ao instalar os requisitos do aplicativo.
@connorbode, que tal configurar um índice devpi com os lançamentos, então você pode apontar pip para o devpi como índice e não precisará de nenhum link de dependência e também irá espelhar / armazenar em cache pypi em sua rede de trabalho
Comentários muito úteis
@dstufft O que é essa substituição?
Tenho dois pacotes PackageA e PackageB armazenados em repositórios Git privados e um aplicativo de aplicativo. O aplicativo depende do PackageA e o PackageA depende do PackageB. Não encontrei nenhuma maneira de instalar o PackageB automaticamente como uma dependência do PackageA ao instalar os requisitos do aplicativo.