Tenho dependency_links em meu setup.py:
...
dependency_links = ['http://github.com/robot-republic/python-s3/tarball/master.tar.gz#egg=python-s3'],
...
Mas não funciona. No entanto, install_requires funciona bem. Talvez haja outro método para configurar o repo git conforme necessário para setup.py?
Essa resposta deve ajudar. Em suma, você precisa especificar a versão (ou "dev") para #egg=python-s3que se pareça #egg=python-s3-1.0.0.
Atualizações baseadas no comentário de @Cerin:
--process-dependency-links. Não testei porque concordo com o ponto abaixo.Sei que é uma questão antiga, mas, caso você esteja aqui como eu, foi o que funcionou para mim.
Eu tenho um pacote no GitHub (não registrado com pypi) que depende de outros pacotes GitHub (não-pypi). Passei uma quantidade excessiva de tempo tentando descobrir como fazer o pip lidar com isso corretamente. Vou incluir o que fiz para corrigi-lo aqui.
Colocar dependências em um arquivo requirements.txt é o método preferido para listar dependências. No entanto, você também precisa preencher install_requires na configuração. Foi nesse estágio que me deparei com um obstáculo com o pip não querendo instalar dependências do GitHub.
A maioria dos lugares, incluindo as respostas a esta pergunta, diz para você preencher a seção dependency_links da configuração. No entanto, você também precisa preencher o campo install_requires com o nome do pacote referenciado em dependency_links.
Por exemplo, se seu requirements.txt contiver o seguinte.
somepackage==1.2.0
https://github.com/user/repo/tarball/master#egg=repo-1.0.0
anotherpackage==4.2.1
Então, sua chamada de configuração deve ser assim:
setup(
name='yourpackage',
version='1.7.5',
packages=[],
url='',
license='',
author='',
author_email='',
description='',
install_requires=[
'somepackage==1.2.0',
'repo==1.0.0',
'anotherpackage==4.2.1'
],
dependency_links=[
'https://github.com/user/repo/tarball/master#egg=repo-1.0.0'
]
)
Ok, agora temos nosso pacote configurado; instalá-lo é a próxima tarefa. Foi aqui que passei muito tempo. Não consegui descobrir por que especificar dependency_links aparentemente não fazia nada. O truque é que, em alguns casos, você precisa definir o sinalizador allow-all-external (pode ser mais específico) para pip. Por exemplo:
pip install git+https://github.com/user/anotherrepo.git
--process-dependency-links --allow-all-external
Você está pronto e funciona!
AVISO LEGAL: dependency_links e os sinalizadores process-dependency-links e allow-all-external estão obsoletos, portanto, serão removidos em breve. No tempo que passei, não consegui localizar um método preferencial melhor e ainda ter o pip funcionando corretamente.
desde o pip versão 18.1 PEP 508 URL é suportado. Isso significa que você não precisa mais dos dependency_links obsoletos. Em vez disso, você escreve a dependência diretamente na lista install_requires. O exemplo de @Chad é assim:
setup(
name='yourpackage',
version='1.7.5',
packages=[],
url='',
license='',
author='',
author_email='',
description='',
install_requires=[
'somepackage==1.2.0',
'repo @ https://github.com/user/archive/master.zip#egg=repo-1.0.0',
'anotherpackage==4.2.1'
],
)
Para instalar seu pacote, você pode simplesmente escrever:
pip install yourpackage
(sem --process-dependency-links)
Algumas notas sobre alguns problemas que encontrei, em particular para a instalação de repositórios privados.
A instalação a partir do pip & setuptools tem algumas diferenças sutis; mas essa maneira deve funcionar para ambos.
from setuptools import setup
import os
# get deploy key from https://help.github.com/articles/git-automation-with-oauth-tokens/
github_token = os.environ['GITHUB_TOKEN']
setup(
# ...
install_requires='package',
dependency_links = [
'git+https://{github_token}@github.com/user/{package}.git/@{version}#egg={package}-0'
.format(github_token=github_token, package=package, version=master)
]
Algumas notas aqui:
0) no final do link, mesmo se não houver pacote no PyPI. Tem que ser um número real, não uma palavra.git+para dizer ao setuptools que ele deve clonar o repo, em vez de apontar para um zip / tarballversion pode ser um branch, uma tag ou um hash de commit--process-dependency-linksse estiver instalando a partir do pipPrimeiro atualize sua versão do pip, pois esta é uma nova sintaxe.
pip install pip --upgrade
Em seguida, faça o seguinte:
install_requires=[
'bleualign-git @ https://github.com/rsennrich/Bleualign/archive/<commit-hash or branch-name>.zip#egg=bleualign-git-1.0.0'
]
Espero que isto ajude.
Comentários:
Boa resposta (votação positiva). Também quero mencionar que o resultado real provavelmente dependeria da plataforma e / ou versão do pip. Já vi quando funciona , ou aparentemente funciona, mas não puxei realmente a dependência do link especificado ou simplesmente foi rejeitado . Então, eu provavelmente usaria isso apenas como uma solução alternativa de curto prazo. Fique com a forma tradicional sempre que possível.
Jana Duggar foi aberta sobre sua busca pelo amor. Aqui está tudo o que ela disse sobre o assunto e sua janela de cinco anos para o casamento.
O astro de 'Outlander', Sam Heughan, revelou recentemente o que vai levar do set para relembrar Jamie Fraser, o papel que o tornou uma estrela.
'She Loves You' foi escrita em uma hora, gravada em um dia, e foi a música dos Beatles com uma de suas melhores apresentações de sua carreira.
Dolly Parton e sua avó Bessie tiveram um relacionamento especial. Vovó Parton estava muito doente, mas isso não impediu Dolly de pregar uma peça nela.
Você pode achar que o carvalho ou a nogueira são madeiras resistentes, mas quando se trata da madeira mais dura do mundo, elas nem chegam perto.
O oceano é repleto de beleza, mas também esconde algumas das criaturas marinhas mais assustadoras do planeta. Muitos desses animais espreitam nas profundezas do oceano, no mundo escuro e de alta pressão do fundo do mar.
Se você está enfrentando criaturas hostis ou se preparando para cenários PvP, conhecer os melhores encantamentos de espada no Minecraft pode te dar uma grande vantagem. Encantar espadas permite causar mais dano, aumentar a quantidade de itens obtidos de criaturas e prolongar a durabilidade da sua espada.
Quando as pessoas falam sobre países socialistas, geralmente imaginam o controle total do governo e a ausência de propriedade privada. Mas, na prática, as economias socialistas variam muito.
“Children” traz uma participação especial de grande nome e algumas notícias devastadoras
Este RAV4 está em excelentes condições e está preparado para um jogo de cadeiras musicais.
Imagens de drone capturaram bombeiros parecendo lutar para apagar o incêndio.
Eyes of Wakanda está diretamente relacionado ao MCU, além de atualizações sobre X-Men '97, What If..., Demolidor e muito mais.
O anel de noivado de Kate Middleton pertenceu à Princesa Diana antes do Príncipe William pedi-la em casamento. Descubra tudo o que há para saber sobre a peça histórica aqui.
John Cleese se casou com sua esposa, Jennifer Wade, em 2012. Aqui está tudo o que você precisa saber sobre a esposa de John Cleese, Jennifer Wade.
Patton Oswalt se casou com sua esposa, a também atriz Meredith Salenger, em 2017. Aqui está tudo o que você precisa saber sobre a esposa de Patton Oswalt, Meredith Salenger.
Mena Suvari é casada com o marido Michael Hope desde 2018. Aqui está tudo o que você precisa saber sobre o marido de Mena Suvari.
Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.
Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.