¿Cómo puedo especificar una rama Git personalizada en mi Pipfile?

3 minutos de lectura

avatar de usuario de kuza
kuza

Es posible especificar en Pipfile paquetes del repositorio Git personalizado. Pero no puedo encontrar documentación completa sobre cómo especificar la rama concreta o una confirmación que se usará para la instalación.

¿Existe una referencia completa sobre cómo usar las URL de Git para paquetes de Python en el Pipfile que son apoyados por el pipenv para especificar ramas, versiones o confirmaciones personalizadas?

Sería muy bueno tenerlo con equivalente pipenv argumentos de la línea de comandos.

Avatar de usuario de Alex W
alex w

Aquí está alguna documentación en el repositorio de GitHub para pipenv:

Puede instalar paquetes con pipenv desde git y otros sistemas de control de versiones usando URL formateadas de acuerdo con la siguiente regla:

<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#egg=<package_name>

Así por ejemplo:

[packages]
requests = {git = "https://github.com/requests/requests.git", editable = true, ref = "v2.20.1"}

Puede generar un Pipfile usando la línea de comando. El Pipfile anterior se generó con:

pipenv install -e git+https://github.com/requests/requests.git@v2.20.1#egg=requests

La documentación para pip entra en más detalle.

  • Estaba instalando con éxito nuestros paquetes de GIT consultando esta documentación, mientras que me olvidé por completo de esta pregunta mía antes de que dicha información estuviera disponible. La primera referencia de la VCS cometido el 20 de septiembre de 2017, no mencionó la posibilidad de especificar sucursales hasta este la edición se comprometió el 12 de agosto de 2018. ¿Tal vez esta respuesta sea un buen candidato para una wiki comunitaria?

    – kuza

    16 de diciembre de 2018 a las 15:29

  • Esto funcionó para mí, pero tenga en cuenta que el “huevo” debe ser el nombre original del proyecto, no algún otro nombre que defina en el intento equivocado de evitar un conflicto de nombres. 🙂

    – Nick K9

    27 dic 2022 a las 16:30


Avatar de usuario de Michael
Miguel

pip archivos de paquetes

Además de la excelente respuesta de Alex, también puedes usar pipEl formato de “archivo” de una copia comprimida del repositorio. Varios hosts de código proporcionan automáticamente archivos zip en direcciones URL predecibles.

¿Por qué haría esto?

La instalación de VCS funciona perfectamente bien. Esta alternativa es conveniente si la máquina en la que está instalando no tiene Git, como una imagen de contenedor “delgada”. Los informes anteriores sugirieron que este método era más rápido que Git, pero ahora parecen comparables.

Ejemplos

Reemplace los tokens con los valores que desee en los ejemplos de código a continuación.

Campo Descripción
<package> El nombre del paquete. (Haga coincidir el nombre del paquete con su setup.py!)
<user> El propietario del repositorio
<repo> El nombre del repositorio
<refname> Rama, etiqueta o confirma SHA. Bitbucket también puede usar default para la rama predeterminada.

Pipfile

[packages]
<package> = {file = "https://github.com/<user>/<repo>/archive/<refname>.zip"}
<package> = {file = "https://bitbucket.org/<user>/<repo>/get/<refname>.zip"}
<package> = {file = "https://codeberg.org/<user>/<repo>/archive/<refname>.zip"}
<package> = {file = "https://gitlab.com/<user>/<repo>/-/archive/<refname>/<repo>-<refname>.zip"}

instalación de CLI

pipenv install https://github.com/<user>/<repo>/archive/<refname>.zip
pipenv install https://bitbucket.org/<user>/<repo>/get/<refname>.zip
pipenv install https://codeberg.org/<user>/<repo>/archive/<refname>.zip
pipenv install https://gitlab.com/<user>/<repo>/-/archive/<refname>/<repo>-<refname>.zip

Advertencia

Hay informes de 2017 y 2018 que a diferencia pip, pipenv no lo haré instalar dependencias recursivamente de cremalleras. Sin embargo, las dependencias funcionan bien para mí. este compromiso de septiembre de 2018 es mi mejor suposición de cuándo cambiaron las cosas, pero si sabe lo contrario, comente o edite.

¿Ha sido útil esta solución?