Comecei a trabalhar com setuptools e virtualenv. Meu pacote requer o último python-gearman disponível apenas no GitHub. A versão python-gearman que está no PyPI é antiga. A fonte do Github é compatível com setuptools, ou seja, possui setup.py, etc. Existe uma maneira de fazer com que o setuptools baixe e instale a nova versão em vez de procurá-la no PyPI e instalar a antiga?
Para sua informação, o novo python-gearman é http://github.com/mtai/python-gearman
python
setuptools
distutils
pypi
andrei
fonte
fonte
python setup.py install
no diretório de origem?easy_install
oupip
instalá-lo diretamente do Github. Mas há também outra solução, você já pensou em adicionar o pacote ao PyPI?buildout
? Ele tem alguns plugins Git prontos.Respostas:
A chave é informar ao easy_install onde o pacote pode ser baixado. Nesse caso específico, ele pode ser encontrado no URL http://github.com/mtai/python-gearman/tarball/master . No entanto, esse link por si só não funcionará, porque o easy_install não pode dizer apenas olhando para o URL o que ele obterá.
Alterando-o para http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta , o easy_install poderá identificar o nome do pacote e sua versão.
A etapa final é adicionar o URL aos dependency_links do seu pacote, por exemplo:
Agora, quando o seu pacote estiver sendo instalado, o easy_install descobrirá que existe um "gearman 2.0.0beta" disponível para download a partir desse URL e, felizmente, escolha-o sobre o PyPI, se você especificar "gearman> = 2.0.0beta" em suas dependências ..
(Normalmente, a maneira como isso é feito é incluir um link na página PyPI da pessoa para a fonte para download; nesse caso, se o autor do pacote gearman tiver incluído um link como o acima, você já estará definido Normalmente, as pessoas marcam a versão de desenvolvimento com 'myproject-dev' e usam o requisito 'myproject> = someever, == dev', de modo que, se não houver um pacote igual ou superior, o easy_install tentará confira ou faça o download do release.)
Você precisará especificar
--process-dependency-links
ao usarpip
. Observe que o processamento dos links de dependência foi descontinuado e será removido em uma versão futura.fonte
beta
sufixo em uma versão existente no PyPI, ele ainda instalará o pacote do PyPI em vez do definido emdependency_links
. Se você tentar definir uma versão superior à que existe no PyPI#egg=package-version
, a ferramenta de configuração reclamará com umCould not find a version that satisfies the requirement
erro e uma lista de todas as versões disponíveis no PyPI. Observe que estou tentando criar meu pacotesdist
e instalá-lopip install http://url/to/my/generated/tar
.easy_install http://url/to/my/generated/tar
, tudo funciona como esperado ... Alguma idéia do porquê?--process-dependency-links
foi removido a partir depip
19! Veja: github.com/pypa/pip/issues/6162Você pode usar o
pip install protocol+location[@tag][#egg=Dependency]
formato para instalar diretamente da fonte usando o pip.Git
Mercurial
SVN
Bzr
Os seguintes protocolos são suportados:
[+git, +svn, +hg, +bzr]
Versões
@tag
permite especificar uma versão / etiqueta específica para check-out.#egg=name
permite especificar o que o projeto é como uma dependência para outras pessoas.A ordem deve sempre ser
@tag#egg=name
.Repositórios particulares
Você também pode instalar a partir de repositórios privados alterando o protocolo para SSH (
ssh://
) e adicionando um usuário apropriado (git@
):Você também pode instalar a partir de repositórios particulares com um nome de usuário / senha.
O Github oferece a capacidade de criar tokens OAuth pessoais que podem ser alternados
requirements.txt
requirements.txt
é usado para especificar dependências do projeto:requirements.txt
Estes não são instalados automaticamente com o pacote e deve ser instalado com o comando
pip -r requirements.txt
.Incluindo arquivos de requisitos
Os arquivos de requisitos podem incluir outros arquivos de requisitos:
requirements-docs.txt
requirements-dev.txt
requirements.txt
setup.py
Os arquivos de requisitos podem instalar as dependências especificadas
setup.py
com o seguinte comando:setup.py
também pode instalar a partir de repositórios usando a mesma sintaxe acima, mas usando odependency_links
valor mencionado nesta resposta .Referências:
https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html
fonte
extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
Como eu só tinha que fazer a mesma coisa, eu encontrei outra maneira de fazer isso como
pip
's--process-dependency-links
estão programados para serem removidos empip
19,0 de acordo com este comentário .pip
18.1 inclui o seguinte recursoA partir da descrição do PEP 508, a sintaxe para essas dependências de URL é semelhante a:
Então no seu
setup.py
pareceriaObserve que o link é um arquivo morto e também pode ser uma liberação ou ramificação específica de um repositório, conforme descrito nesta resposta . Além disso, consulte essa resposta para trabalhar com outros hosts de repositório.
Que eu saiba, a maneira mais fácil de atualizar a dependência é usando
pip install -I .
ao instalar o pacote a partir do diretóriofonte
pip install
suporta, como URLs git,#subdirectory=...
etc? Ou eles criaram uma nova sintaxe com recursos diferentes expostos de maneira diferente e incompatível?distutils.core.setup
epip 19.1.1
requirements.txt
, no entanto, não é compatível compip install -r requirments.txt
requirments.txt
você está se referindo?O Vanilla
setuptools
não suporta o download diretamente de um repositório git, mas você pode usar um dos links de Fonte de Download dessa página, como:fonte
pip
oubuildout
que possuem gerenciamento de requisitos mais sofisticado. Veja, por exemplo: pip.openplans.org/#requirements-files