instalação do pip a partir do ramo de repositório git

685

Tentando pipinstalar uma ramificação específica de um repositório. Google me diz para

pip install git + https://github.com/user/repo.git@branch

O nome da filial é o issue/34/oscar-0.6que eu fiz, pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6mas está retornando um 404.

Como instalo este ramo?

goh
fonte

Respostas:

931

Prefira o prefixo da URL git+(consulte o Suporte ao VCS ):

pip install git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6

E especifique o nome do ramo sem o início /.

falsetru
fonte
5
é mendatory especificar branch ou commit por @?
Eugene
9
@eugene, No @e partes depois disso são opcionais.
falsetru
3
Ei, agora não é necessário colocar tree, isso gera um erro.
Salahaddin
6
É para sucursais, por exemplo:pip install -U git+https://github.com/danreeves/[email protected]
SalahAdDin 10/03/2017
3
Você também pode colocar algo assim git+https://github.com/adiralashiva8/[email protected]nos seus requisitos.txt e depois instalar com pip install -r requirements.txt. Isso instalará o Tag v3.1.4 a partir da ramificação principal.
Wlad
311

Usar o pip com git + para clonar um repositório pode ser extremamente lento (teste com https://github.com/django/django@stable/1.6.x, por exemplo, levará alguns minutos). A coisa mais rápida que encontrei, que funciona com o GitHub e o BitBucket, é:

pip install https://github.com/user/repository/archive/branch.zip

que se torna para o django master:

pip install https://github.com/django/django/archive/master.zip

para django stable / 1.7.x:

pip install https://github.com/django/django/archive/stable/1.7.x.zip

Com o BitBucket, é sobre o mesmo padrão previsível:

pip install https://bitbucket.org/izi/django-admin-tools/get/default.zip

Aqui, o ramo mestre geralmente é chamado de padrão. Isso fará com que seus requisitos.txt sejam instalados muito mais rapidamente.

Algumas outras respostas mencionam variações necessárias ao colocar o pacote a ser instalado no seu requirements.txt. Observe que, com essa sintaxe de arquivamento, não é necessário o início -ee o final , e você pode simplesmente colar a URL, para que seus requisitos.txt sejam parecidos com:#egg=blah-blah

https://github.com/user/repository/archive/branch.zip
Steve K
fonte
29
Nota: do Django 1.9 em diante, o Django é enviado com um arquivo que possui um nome de arquivo unicode . O extrator de zip usado pela pip se afasta disso. Uma solução fácil é substituir .zipcom .tar.gz, como o extrator tar funciona.
espectros
4
Gostaria de saber se o pip poderia passar --depth 0durante a clonagem para torná-lo mais eficiente (todo o histórico do git não é necessário para instalar um instantâneo para o pip). git-scm.com/docs/git-clone
cs01 31/03
6
Isso também funciona para confirmar hashes! pip install https://github.com/django/django/archive/ebaa08b.zip
quer
4
Obrigado por apontar a diferença de velocidade. Não testei nem os comparei, mas acredito que a diferença de velocidade existe, porque a instalação de uma ramificação ainda resultaria no download de todo o histórico do repositório, enquanto a instalação de um .zip(ou .tar.gz) resultaria no download apenas de uma captura instantânea do repositório.
precisa saber é o seguinte
É possível instalar extras usando esta sintaxe? Por exemplo, estou tentando instalar o github.com/apache/incubator-airflow @ master (o pacote PyPI normal é apache-airflow) para trabalhar com uma versão não lançada. Gostaria de converter a chamada pip install apache-airflow[crypto, slack]para instalar esses extras com a versão do arquivo. Eu tentei, pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]mas isso quebra a URL e a instalação.
Taylor Edmiston
67

Instruções para instalar a partir de repositório particular usando credenciais ssh :

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version
Jaakko
fonte
51

Apenas para adicionar um extra, se você quiser instalá-lo no seu arquivo pip, ele pode ser adicionado assim:

-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal

Ele será salvo como um ovo.

Hassek
fonte
5
Melhor usá-lo sem o -e. Veja: stackoverflow.com/a/34518202/451710
Eyal Levin
4
Obrigado pelo comentário, muito interessante. Eu acho que as pessoas tendem a usar a -ebandeira para evitar qualquer conflito possível com um pacote já existente. Acho que é uma questão de escolha
Hassek
4
E se você quiser "extras", anexe-os no fragmento, da seguinte forma:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis 20/01
Observe que, na -everdade, não parece ser necessário.
Taylor Edmiston
Por alguma razão, ele não funciona para mim sem a-e
Kurt Bourbaki
4

Você usou o procedimento de instalação dos arquivos egg. Este procedimento suporta a instalação sobre git, git+http, git+https, git+ssh, git+gite git+file. Alguns destes são mencionados.

É bom que você possa usar ramificações, tags ou hashes para instalar.

O @Steve_K observou que pode ser lento instalar com "git +" e propôs a instalação via arquivo zip:

pip install https://github.com/user/repository/archive/branch.zip

Como alternativa, sugiro que você possa instalar usando o .whlarquivo, se ele existir.

pip install https://github.com/user/repository/archive/branch.whl

É um formato bastante novo, mais novo que arquivos de ovo. Requer roda e ferramentas de instalação> = 0,8 pacotes. Você pode encontrar mais aqui .

prosti
fonte
1
A questão não é especificada no github. A noção de archive / branch.zip é específica apenas para o github.
Jorge Leitao
0

Isso funcionou como charme:

pip3 install git+https://github.com/deepak1725/fabric8-analytics-worker.git@develop

Onde :

desenvolver: Filial

fabric8-analytics-worker.git: Repo

deepak1725: user

Deepak Sharma
fonte