¿Es posible utilizar pip para instalar un paquete desde un repositorio privado de GitHub?

Resuelto Adam J. Forster asked hace 13 años • 17 respuestas

Estoy intentando instalar un paquete de Python desde un repositorio privado de GitHub. Para un repositorio público, puedo emitir el siguiente comando que funciona bien:

pip install git+git://github.com/django/django.git

Sin embargo, si intento esto para un repositorio privado:

pip install git+git://github.com/echweb/echweb-utils.git

Obtengo el siguiente resultado:

Downloading/unpacking git+git://github.com/echweb/echweb-utils.git
Cloning Git repository git://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build
Complete output from command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build:
fatal: The remote end hung up unexpectedly

Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build...

----------------------------------------
Command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build failed with error code 128

Supongo que esto se debe a que estoy intentando acceder a un repositorio privado sin proporcionar ninguna autenticación. Por lo tanto, intenté usar Git + sshcon la esperanza de que pip usara mi clave pública SSH para autenticarme:

pip install git+ssh://github.com/echweb/echweb-utils.git

Esto da el siguiente resultado:

Downloading/unpacking git+ssh://github.com/echweb/echweb-utils.git
Cloning Git repository ssh://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build
Complete output from command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build:
Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build...

Permission denied (publickey).

fatal: The remote end hung up unexpectedly

----------------------------------------
Command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build failed with error code 128

¿Es posible lo que estoy tratando de lograr? Si es así, ¿cómo puedo hacerlo?

Adam J. Forster avatar Jan 28 '11 23:01 Adam J. Forster
Aceptado

Puede utilizar el git+sshesquema URI, pero debe establecer un nombre de usuario. Observe la git@parte en el URI:

pip install git+ssh://[email protected]/echweb/echweb-utils.git

Lea también sobre las claves de implementación .

PD: En mi instalación, el esquema URI "git+ssh" funciona sólo con requisitos "editables":

pip install -e URI#egg=EggName

Recuerde : cambie el :carácter que git remote -vse imprime a un /carácter antes de usar la dirección del control remoto en el pipcomando:

$ git remote -v
origin  [email protected]:echweb/echweb-utils.git (fetch)
#                     ^ change this to a '/' character

Si lo olvida, obtendrá este error:

ssh: Could not resolve hostname github.com:echweb:
         nodename nor servname provided, or not known
oxyum avatar Jan 29 '2011 15:01 oxyum

Como técnica adicional, si tienes el repositorio privado clonado localmente, puedes hacer:

pip install git+file://c:/repo/directory

De manera más moderna, puedes hacer esto (y eso -esignificará que no tienes que confirmar los cambios antes de que se reflejen):

pip install -e C:\repo\directory
Scott Stafford avatar Jan 21 '2013 02:01 Scott Stafford