Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda