Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
¿Para qué sirve el archivo pyproject.toml?

Antecedentes

Estaba a punto de probar el paquete de Python descargado de GitHub y me di cuenta de que no tenía un setup.py , por lo que no podía instalarlo con

 pip install -e <folder>

En cambio, el paquete tenía un archivo pyproject.toml que parece tener entradas muy similares a las que normalmente tiene setup.py .

Lo que encontré

Buscar en Google me llevó a PEP-518 y ofrece algunas críticas a setup.py en la sección Justificación . Sin embargo, no dice claramente que se debe evitar el uso de setup.py , o que pyproject.toml reemplazaría por completo a setup.py .

Preguntas

¿Es pyproject.toml algo que se usa para reemplazar setup.py ? ¿O debería venir un paquete con ambos, un pyproject.toml y un setup.py ?
¿Cómo se instalaría un proyecto con pyproject.toml en un estado editable?

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

Sí, pyproject.toml es el formato de archivo especificado de PEP 518 que contiene los requisitos del sistema de compilación de los proyectos de Python.

Esto resuelve el problema del huevo y la gallina de la dependencia de la herramienta de construcción, es decir, pip puede leer pyproject.toml y qué versión de setuptools o wheel puede necesitar.

Si necesita un setup.py para una instalación editable, puede usar un shim en setup.py :

 #!/usr/bin/env python import setuptools if __name__ == "__main__": setuptools.setup()
over 4 years ago · Santiago Trujillo Report

0

pyproject.toml es el nuevo archivo de configuración de proyecto de Python unificado que reemplaza a setup.py . Las instalaciones editables aún necesitan un setup.py : import setuptools; setuptools.setup()

Para usar pyproject.toml , ejecute python -m pip install .

Luego, si el proyecto usa poetry en lugar de pip , puede instalar dependencias (en %USERPROFILE%\AppData\Local\pypoetry\Cache\virtualenvs ) como esta:

 poetry install

Y luego ejecute dependencias como pytest :

 poetry run pytest tests/

Y pre-commit (usa .pre-commit-config.yaml ):

 poetry run pre-commit install poetry run pre-commit run --all-files
over 4 years ago · Santiago Trujillo Report

0

Actualmente, hay varias herramientas de empaquetado que son populares en la comunidad de Python y, aunque las herramientas de setuptools todavía parecen prevalecer, ya no son un estándar de facto. Esta situación crea una serie de molestias tanto para los usuarios finales como para los desarrolladores:

  1. Para los paquetes basados ​​en setuptools , la instalación desde la fuente/compilación de una distribución puede fallar si uno no tiene instalado setuptools ;
  2. Los paquetes basados ​​en otras herramientas de empaquetado no se pueden instalar desde el origen mediante pip . Uno tiene que instalar primero la herramienta de empaquetado y luego usar los comandos específicos de la herramienta para instalar/construir un paquete de distribución;
  3. Si el autor del paquete decide cambiar la herramienta de empaquetado, también se deben cambiar los flujos de trabajo para usar diferentes comandos específicos de la herramienta.

pyproject.toml es un nuevo archivo de configuración introducido por PEP 517 y PEP 518 para resolver estos problemas:

... piense en los pasos (aproximados) necesarios para producir un artefacto construido para un proyecto:

  1. La verificación de origen del proyecto.
  2. Instalación del sistema de construcción.
  3. Ejecutar el sistema de compilación.

Este PEP [518] cubre el paso #2. PEP 517 cubre el paso #3...

Cualquier herramienta también puede ampliar este archivo con su propia sección (tabla) para aceptar opciones específicas de la herramienta, pero depende de ellos y no es obligatorio.


Para los paquetes basados ​​en setuptools , pyproject.toml no está destinado estrictamente a reemplazar setup.py , sino a garantizar su ejecución correcta si aún es necesario. Para otras herramientas de embalaje, sí, lo es:

Cuando existe la clave build-backend , esta tiene prioridad y el árbol de origen sigue el formato y las convenciones del backend especificado (como tal, no se necesita setup.py a menos que el backend lo requiera ). Es posible que los proyectos aún deseen incluir un setup.py para compatibilidad con herramientas que no usan esta especificación.


La "instalación editable" es una setuptools específica de las herramientas de configuración y, como tal, no es compatible con PEP 517 :

 Install Options: -e, --editable <path/url> Install a project in editable mode (ie setuptools "develop mode")

Para instalar el paquete basado en setuptools en un modo editable, debe tener un archivo setup.py con al menos un contenido mínimo:

 from setuptools import setup setup()
over 4 years ago · Santiago Trujillo Report

0

Respondiendo solo a esta parte, ya que el resto ha sido muy bien explicado por otros:

¿Cómo se instalaría un proyecto con pyproject.toml en un estado editable?

Solución alternativa (en funcionamiento)

  1. Clone el proyecto y ejecute la poetry install para crear primero una instalación normal.

  2. Obtén la ruta del virtualenv que ha creado poet usando poetry env info -p . Probablemente será algo así como <absolute path of your cloned project/.venv . Luego verifique cuál es la ruta al directorio site-packages dentro de él. Depende de su versión de Python y será algo así como <absolute path of your cloned project/.venv/lib/python3.9/site-packages .

  3. Cree un archivo .pth dentro de este site-packages . Debe contener una sola línea de texto con la ruta completa del paquete para instalar en modo editable:

 echo "<absolute path of your cloned project>" > "<absolute path of your cloned project/.venv/lib/python3.9/site-packages/package_name.pth"

Solución adecuada (no implementada a partir de agosto de 2021)

En junio de 2021, se aceptó un PEP-660 que describe instalaciones editables para compilaciones basadas en pyproject.toml .

En este PR se trabaja en su implementación para la poetry .

Así que tenemos que esperar a que esté terminado, se fusione y se publique una nueva versión de poetry .

Fuentes

Además de los vinculados anteriormente, mi fuente principal es "pip install -e . ¿equivalente?" - número 34 en github.com/python-poetry/poetry .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!