Cuando hago un "pip install -e ..." para instalar desde un repositorio de git, tengo que especificar # egg = somename o pip quejas. Por ejemplo:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
¿Cuál es el significado de esta cuerda de "huevo"?
pip install
documentación habla#egg=name
, pero no da una respuesta clara.Respuestas:
per pip install -h la cadena "egg" es el directorio que se extrae como parte de la instalación
fuente
project-name.egg-info/top_level.txt
debería haber creado un directorio llamado . Utilice el contenido de este archivo como valor para elegg
parámetro.egg=...
entorno realmente importa. El paquete que estoy instalando tiene varias entradas en el archivo top_level.txt. He experimentadoname
comparándolo con el kwarg que usa el script,setup.py
pero también con un valor arbitrario. Los resultados parecen ser los mismos de cualquier manera. Tenga en cuenta que estoy instalando usando lapip install https://...
sintaxis que no requiere-e
.Tienes que incluir # egg = Package para que pip sepa qué esperar en esa URL. Ver https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
más sobre huevos
fuente
pip install -h
,Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)
no estoy seguro de que se use en otro lugar ...https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support dice:
De esto deduzco que el valor del huevo solo se usa para verificaciones de dependencia y, por lo tanto, creo que, por convención, se
some-pypi-package-name
debe usar el nombre del paquete (es decir ), no cualquier carpeta contenida (es decirsome_pypi_package_name
)fuente
Un huevo es solo un código de Python incluido . En una URL de git, el huevo es el nombre del proyecto. Soporte VCS
Normalmente instalamos paquetes de Python desde Pypi, por lo que especifica SOLO el nombre y la versión del paquete (o asume la última versión si no lo especifica). Luego, Pypi busca qué huevo desea y pip lo instala.
pip install celery
instalaría el último huevo publicado epip install celery[redis]
instalaría un huevo diferente que contiene el mismo paquete de apio y también instalaría los últimos huevos de los paquetes que se enumeran como dependencias para redis en setup.py de apio.Con las rutas de git y gitlab, usted especifica
/{user|group}/{repository}.git@{tag}#egg={package-name}
. hay una diferencia entre#egg=celery
y#egg=celery[redis]
, pero ambos provendrán del mismo código fuente."etiqueta" también puede ser una rama o un hash de confirmación además de una etiqueta real. Se asume que es así
master
si no especifica.por ejemplo,
git+https://github.com/celery/celery.git#egg=celery==4.3.0
verificaría la rama maestra e instalaría eso. Aunque haya especificado un número de versión, no se tiene en cuenta en la instalación. EL NÚMERO DE VERSIÓN ES IGNORADOAl instalar a través de git u otras URL de VCS, querrá encontrar la etiqueta o el hash de la versión que necesita. Por ejemplo,
git+https://github.com/celery/[email protected]#egg=celery
que verificará la confirmación etiquetada "v4.3.0" y luego instalará el paquete desde ese código fuente. Suponiendo que los mantenedores no etiquetaron erróneamente sus repositorios, puede obtener la versión que desea así.fuente