Central Docs
Catálogo Inicio

Puntos de entrada sin `vnma run`

Por defecto, un script solo ve los paquetes de vendor/ cuando se inicia con vnma run. Para una CLI o aplicación que ejecutas con frecuencia, eso es incómodo. vnma insert-import elimina esa necesidad.


1. El comando

# Usa el punto de entrada del proyecto (main.py, src/main.py, source/main.py, app.py):
vnma insert-import

# O indica el script:
vnma insert-import cli/entry.py

El comando inserta esta línea:

import vendor.__bootstrap__  # From VNMA.

Si el proyecto usa otro directorio vendor (por ejemplo vendor_vnma), se usa ese nombre en lugar de vendor.

Después, ejecuta el script con normalidad:

python main.py

2. Comportamiento

Situación Resultado
El archivo no tiene el import del bootstrap La línea se inserta al inicio.
El archivo empieza con un shebang (#!) y/o una declaración de codificación La línea se inserta justo después.
El archivo ya hace referencia a __bootstrap__ No cambia nada.
El archivo no existe Se crea con una plantilla mínima ejecutable.
No se indicó target y no se encontró un punto de entrada Se crea main.py en la raíz del proyecto.

Ejemplo del resultado para un script con shebang:

#!/usr/bin/env python3
import vendor.__bootstrap__  # From VNMA.

from my_package.cli import main

if __name__ == "__main__":
    main()

[!IMPORTANT] El import del bootstrap debe ejecutarse antes de cualquier import de un paquete vendoreado. vnma insert-import lo coloca al inicio por esa razón; mantenlo ahí.


3. Elegir cómo ejecutar

Objetivo Usa
Ejecutar tu propio script durante el desarrollo python main.py después de vnma insert-import, o vnma run main.py
Ejecutar una CLI instalada desde una dependencia vnma exec <herramienta> (consulta Ejecución en runtime)
Comprobar que los directorios enlazados existen antes de ejecutar vnma run

vnma run además define PYTHONPATH y PYTHONNOUSERSITE=1 para el proceso hijo y verifica los directorios enlazados antes de iniciar. El import del bootstrap configura sys.path y los directorios de DLL de Windows desde dentro del proceso. Consulta Ejecución en runtime para los detalles de ambos.


4. Límites

  • El comando solo busca en el archivo el texto __bootstrap__; cualquier aparición cuenta como un import existente.
  • No crea scripts lanzadores para tu propio proyecto. Para tener un comando en el PATH, publica el proyecto como paquete o envuélvelo en un script propio.