Configurando para que a instalação do pip funcione no github

226

Gostaríamos de usar o pip com o github para instalar pacotes particulares em nossos servidores de produção. Esta pergunta diz respeito ao que precisa estar no repositório do github para que a instalação seja bem-sucedida.

Supondo a seguinte linha de comando (que autentica muito bem e tenta instalar):

pip install git+ssh://git@github.com/BlahCo/search/tree/prod_release_branch/ProductName

O que precisa residir no ProductName? É o conteúdo do que normalmente estaria no arquivo tar depois de executar o setup.py com a opção sdist, ou é o arquivo tar.gz real, ou algo mais?

Estou perguntando aqui, porque tentei várias variações e não consigo fazê-lo funcionar. Qualquer ajuda apreciada.

ccgillett
fonte

Respostas:

290

Você precisa de todo o pacote python, com um setup.pyarquivo nele.

Um pacote nomeado fooseria:

foo # the installable package
├── foo
   ├── __init__.py
   └── bar.py
└── setup.py

E instale no github como:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

Mais informações em https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

Hugo Tavares
fonte
3
O acima funciona, muito obrigado. Mas e se eu tiver lançamentos em um subdiretório em um repositório, então, em vez de foo.git, estou procurando por foo / releases / ProductVer. Isso é possível e, em caso afirmativo, como? Muito obrigado pela ajuda!
ccgillett
4
Não, não é possível. O pip instala apenas a partir do diretório raiz do repositório, pelo menos para o git. Não sei como se comporta a subversão ...
Hugo Tavares
3
Se você quiser fazer isso através de SSH e repos privadas, este é um post sobre como fazer isso
Jonathan
Por que você não passou a -eopção (modo editável) para o pip?
Amelio Vazquez-Reina
14
Aqui está o novo esquema de url: pip install git+https://github.com/pypa/pip.git Fonte: pip repositório no GitHub
aboutaaron
111

Eu tive um problema semelhante ao instalar no github repo, mas não queria instalar o git, etc.

A maneira mais simples de fazer isso é usar o arquivo zip do pacote. Adicione /zipball/masterao URL do repositório:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

Dessa forma, você fará o pip funcionar com os repositórios de código-fonte do github.

Dmitry
fonte
2
Esta é a única resposta que também funciona no Windows
divenex 30/03
Como isso pode ser feito com repositórios privados? (como a pergunta pede)
Rodrigo E. Principe
29

Se você deseja usar o requirements.txtarquivo, precisará de gitalgo como a entrada abaixo para buscar anonimamente o ramo principal no seu requirements.txt.

Para instalação regular:

git+git://github.com/celery/django-celery.git

Para instalação " editável ":

-e git://github.com/celery/django-celery.git#egg=django-celery

O modo editável faz o download do código-fonte do projeto ./srcno diretório atual. Ele permite pip freezegerar a localização correta do pacote no github.

wieczorek1990
fonte
3
de onde vem esse nome de ovo? ele não consegue carregar pacote no Django depois de substituir pacote pip com github compromissadas
holms
@holms Nome da pesquisa em setup.py
wieczorek1990
O que é #egg=django-celery? Isso é um espaço reservado?
enchance
@enchance É o nome do pacote.
wieczorek1990 16/03
13

Clone o repositório de destino da mesma maneira que você clonou em qualquer outro projeto:

git clone git@github.com:myuser/foo.git

Em seguida, instale-o no modo de desenvolvimento:

cd foo
pip install -e .

Você pode alterar qualquer coisa que você quiser e todo código usando o foopacote usará o código modificado.

Existem 2 benefícios desta solução:

  1. Você pode instalar o pacote no diretório de projetos iniciais.
  2. O pacote inclui .gitdir, portanto é um repositório Git regular. Você pode pressionar o garfo imediatamente.
avalanche
fonte
2
Posso testemunhar que esta solução é mágica. No meu caso, eu queria invadir pip, então clonei o piprepositório, criei um virtualenv, o ativei e o fiz pip install -e .. Então o pipno virtualenv estava no modo de desenvolvimento! Estou impressionado que isso funcione mesmo com o próprio gerenciador de pacotes.
Radon Rosborough
Isso é ótimo! Percebo que quando instalei usando esse método e, em seguida pip list, execute , o pacote em questão tem referências à ramificação Git e ao caminho absoluto a partir do qual foi instalado. Mantém alguma referência a elas ou a fonte pode ser excluída?
MadPhysicist
0

você pode tentar assim em Colab

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
Shaina Raza
fonte