txt tutorial example create python github pip requirements.txt

tutorial - requirements.txt python example



Cómo declarar en Requirements.txt una fuente de github directa (5)

Desde pip v1.5 , (publicado el 1 de enero de 2014: CHANGELOG , PR ), también puede especificar un subdirectorio de un repositorio git para contener su módulo. La sintaxis se ve así:

pip install -e git+https://git.repo/some_repo.git#egg=my_subdir_pkg&subdirectory=my_subdir_pkg # install a python package from a repo subdirectory

Nota: como autor de un módulo PIP, lo ideal es que desees publicar tu módulo en su propio repositorio de nivel superior, si puedes. Sin embargo, esta característica es útil para algunos repositorios preexistentes que contienen módulos de Python en subdirectorios. Puede verse obligado a instalarlos de esta manera si no se publican en pypi también.

He instalado una biblioteca usando el comando

pip install git+git://github.com/mozilla/elasticutils.git

que lo instala directamente desde un repositorio Github. Esto funciona bien y quiero tener esa dependencia en mis requirements.txt . He visto otras entradas como this pero eso no resolvió mi problema. Si pongo algo como

-f git+git://github.com/mozilla/elasticutils.git elasticutils==0.7.dev

en el archivo pip install -r requirements.txt , un pip install -r requirements.txt da como resultado el siguiente resultado:

Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20)) Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: ) No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))

La documentación del archivo de requisitos no menciona los enlaces que utilizan el especificador de protocolo git+git , por lo que tal vez esto no sea compatible.

¿Alguien tiene una solución para mi problema?


Normalmente, el archivo Requirements.txt se vería así:

package-one==1.9.4 package-two==3.7.1 package-three==1.0.1 ...

Para especificar un repositorio de Github, no necesita el package-name== convención.

Los siguientes ejemplos actualizan el package-two utilizando un repositorio de GitHub. El texto entre @ y # denota los detalles del paquete.

Especifique el hash de confirmación ( 41b95ec en el contexto de requirements.txt actualizados.txt):

package-one==1.9.4 git+git://github.com/path/to/package-two@41b95ec#egg=package-two package-three==1.0.1

Especifique el nombre de la rama ( master ):

git+git://github.com/path/to/package-two@master#egg=package-two

Especificar etiqueta ( 0.1 ):

git+git://github.com/path/to/[email protected]#egg=package-two

Especificar lanzamiento ( 3.7.1 ):

git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-two

Tenga en cuenta que #egg=package-two no es un comentario aquí, es para indicar explícitamente el nombre del paquete

Esta entrada de blog tiene más discusión sobre el tema.


Primero, instálalo con git+git o git+https , de cualquier forma que sepas. Ejemplo de instalación de la rama de brabeion proyecto brabeion :

pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion

En segundo lugar, use pip freeze > requirements.txt para obtener lo correcto en sus requirements.txt . En este caso, obtendrá

-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-master

Tercero, prueba el resultado:

pip uninstall brabeion pip install -r requirements.txt


La sintaxis de los paquetes "editables" se puede usar en requirements.txt para importar paquetes desde una variedad de VCS (git, hg, bzr, svn) :

-e git://github.com/mozilla/elasticutils.git#egg=elasticutils

Además, es posible señalar un compromiso particular:

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils


requirements.txt permite las siguientes formas de especificar una dependencia en un paquete en un repositorio git a partir de pip 7.0: 1

[-e] git+git://git.myproject.org/SomeProject#egg=SomeProject [-e] git+https://git.myproject.org/SomeProject#egg=SomeProject [-e] git+ssh://git.myproject.org/SomeProject#egg=SomeProject -e [email protected]:SomeProject#egg=SomeProject

Para Github, eso significa que puede hacer (observe el -e omitido):

git+git://github.com/mozilla/elasticutils.git#egg=elasticutils

¿Por qué la respuesta extra?
Me quedé algo confundido por la -e en las otras respuestas, así que aquí está mi aclaración:

El indicador -e o - --editable significa que el paquete está instalado en <venv path>/src/SomeProject y, por lo tanto, no está en la <venv path>/lib/pythonX.X/site-packages/SomeProject profundamente enterrado, de lo contrario sería colocado en. 2

Documentación