El Poesía project es un sistema de gestión de dependencias para Python. Utiliza el nuevo pyproject.toml archivo como su archivo de configuración.
Las herramientas de Poetry admiten algunas formas diferentes de especificar las versiones permitidas de sus dependencias. ¿Cuál es la sintaxis del especificador de versión para las dependencias de poesía?
cristiano largo
En pyproject.toml, utiliza el [tool.poetry.dependencies]
y [tool.poetry.dev-dependencies]
secciones para especificar sus dependencias por nombre y versión.
cuando corres poetry install
Poetry instalará los requisitos hash exactos que ha escrito en su poetry.lock
archivo.
Sin embargo, cuando corres poetry update
, Poetry verificará si puede encontrar versiones más nuevas de sus dependencias que coincidan con los criterios de versión que especificó. Si poetry update
encuentra una versión más reciente permitida por sus especificadores de versión, la descargará e instalará. También actualizará su poetry.lock
archivo con el nuevo número de versión y el nuevo hash.
Poetry admite varias formas diferentes de declarar la versión permitida de sus dependencias.
Versión exacta
Si no incluye ningún modificador, Poetry mantendrá su dependencia anclada en esa versión exacta.
beepboop = "2.1.7"
Con esa configuración, si se lanza una nueva versión de beepboop, poetry update
no lo instalará.
Versión de intercalación
Si usas el signo de intercalación ^
carácter, Poetry se actualizará a cualquier versión nueva que no cambie la sección distinta de cero más a la izquierda.
beepboop = "^2.1.7"
# Equivalent to >=2.1.7, <3.0.0
Con la configuración anterior, poetry update
actualizaría beepboop a 2.1.8, 2.2, 2.3, etc. Poetry no se actualizaría a beepboop 3.0, porque eso cambia la sección distinta de cero más a la izquierda del número de versión de 2 a 3.
zeepzorp = "^0.24.1"
# Equivalent to >=0.24.1, <0.25.0
Con la configuración anterior, poetry update
actualizaría zeepzorp a 0.24.2. Poetry no se actualizaría a zeepzorp 0.25.0, porque eso cambia la sección distinta de cero más a la izquierda del número de versión de 24 a 25.
El modificador de versión caret es bastante agresivo sobre qué versiones mejoradas están permitidas. Esto puede causar problemas si los mantenedores de sus dependencias introducen cambios importantes sin incrementar el número de versión principal.
Versión tilde
la tilde ~
el personaje le dice a Poetry que permita actualizaciones menores. Si especifica una versión principal, secundaria y de parche, solo se permiten cambios a nivel de parche. Si especifica una versión principal y secundaria, nuevamente solo se permiten cambios a nivel de parche. Si especifica solo una versión principal, se permiten cambios menores y a nivel de parche.
beepboop = "~2.1.7"
# Equivalent to >=2.1.7, <2.2.0
beepboop = "~2.1"
# Equivalent to >=2.1.0, <2.2.0
beepboop = "~2"
# Equivalent to >=2.0.0, <3.0.0
El modificador de versión de tilde es menos agresivo que el modificador de versión de intercalación en las actualizaciones que permitirá.
Versión comodín
La estrella *
el carácter es un comodín. Se permite cualquier número de versión en la posición de comodín.
beepboop = "2.1.*"
# Equivalent to >=2.1.0, <2.2.0
beepboop = "2.*"
# Equivalent to >=2.0.0, <3.0.0
beepboop = "*"
# Allows any version. Equivalent to >=0.0.0
Versión de desigualdad
Puede usar desigualdades para especificar rangos de versión permitidos. Algunos ejemplos:
beepboop = ">= 1.2.0"
beepboop = "> 1"
beepboop = "< 2"
beepboop = "!= 1.2.3"
Especificadores de versiones múltiples
Puede definir rangos de versiones permitidas usando múltiples desigualdades, separadas por comas.
beepboop = ">= 1.2, < 1.5, !=1.2.2"
SolverProblemError
Si editó a mano su pyproject.toml
archivo y usted está recibiendo un SolverProblemError
intenta usar el poetry add
comando en su lugar.
Por ejemplo, intenté agregar mypy = "^0.670"
para mi pyproject.toml
y obtuve un error del solucionador. El poetry add
El comando formateó el archivo de la manera que quería Poesy y especificó la dependencia como mypy = "^0.670.0"
.
También puede obtener un SolverProblemError si especifica su versión de Python como '*'
en pyproject.toml
. Intente especificar su versión de python más estrictamente, como "^3.6"
. Mira esto Problema de GitHub para más información.
Referencias
https://python-poetry.org/docs/dependency-specification/
https://github.com/sdispater/poetry#dependencies-and-dev-dependencies
-
Cuál es la diferencia entre
x.y.z
y==x.y.z
?– Nicolás
4 de agosto de 2021 a las 16:50
Sugerencia: puede consultar otro pyproject.toml para verificar cómo se usan las versiones allí. Por ejemplo la propia poesía oficial .toml https://github.com/python-poetry/poetry/blob/master/pyproject.toml
ver el oficial Especificación de dependencia documentos
– fénix
25 de mayo de 2022 a las 12:13