¿Es posible utilizar pip para instalar un paquete desde un repositorio privado de GitHub?
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 + ssh
con 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?
Puede utilizar el git+ssh
esquema 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 -v
se imprime a un /
carácter antes de usar la dirección del control remoto en el pip
comando:
$ 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
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 -e
significará que no tienes que confirmar los cambios antes de que se reflejen):
pip install -e C:\repo\directory