python:instalable
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| python:instalable [2025/07/15 12:47] – [Local] alberto | python:instalable [2025/07/16 12:05] (actual) – [main.py] alberto | ||
|---|---|---|---|
| Línea 26: | Línea 26: | ||
| ==== __init__.py ==== | ==== __init__.py ==== | ||
| - | Este archivo indica a Python que esta carpeta es un paquete (podría estar vacía) | + | Este archivo indica a Python que esta carpeta es un paquete (podría estar vacía). \\ |
| Funciona como un " | Funciona como un " | ||
| Línea 35: | Línea 35: | ||
| ==== main.py ==== | ==== main.py ==== | ||
| - | Es el punto de entrada al paquete cuando lo ejecutas desde consola. | + | Es el punto de entrada al paquete cuando lo ejecutas desde consola. |
| - | Es donde se define la interfaz de línea de comandos (CLI): qué comandos, opciones y argumentos puede introducir el usuario, incluidos los // | + | Es donde se define la interfaz de línea de comandos (CLI, //Command Line Interface//): qué comandos, opciones y argumentos puede introducir el usuario, incluidos los // |
| - | Utiliza la biblioteca **argparse** para leer argumentos desde línea de comandos. | + | Utiliza la biblioteca **argparse** para leer argumentos desde línea de comandos. |
| En main.py se puede: | En main.py se puede: | ||
| - Leer argumentos desde la terminal. | - Leer argumentos desde la terminal. | ||
| Línea 44: | Línea 44: | ||
| - Mostrar mensajes, progreso (por ejemplo con barras con la librería tqdm) o errores. | - Mostrar mensajes, progreso (por ejemplo con barras con la librería tqdm) o errores. | ||
| - Devolver resultados al usuario (PDF generados, logs, rutas, etc.). | - Devolver resultados al usuario (PDF generados, logs, rutas, etc.). | ||
| + | \\ | ||
| + | En definitiva, realiza el flujo del programa.\\ | ||
| + | |||
| + | Cuando añadimos parámetros con add_argument, | ||
| + | ^ Parámetro | ||
| + | | `name or flags` | ||
| + | | `action` | ||
| + | | `nargs` | ||
| + | | `const` | ||
| + | | `default` | ||
| + | | `type` | ||
| + | | `choices` | ||
| + | | `required` | ||
| + | | `help` | ||
| + | | `metavar` | ||
| + | | `dest` | ||
| + | |||
| + | Para el parámetro " | ||
| + | ^ Acción | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| + | | `' | ||
| - | En definitiva, realiza el flujo del programa. | ||
| A continuación un ejemplo, en el que se define el comando " | A continuación un ejemplo, en el que se define el comando " | ||
| Línea 193: | Línea 220: | ||
| ==== setup.py ==== | ==== setup.py ==== | ||
| - | Es el script de instalación. Usa la librería setuptools para convertir este proyecto en un paquete instalable con pip. | + | Es el script de instalación. Usa la librería setuptools para convertir este proyecto en un paquete instalable con pip. \\ |
| - | Describe los metadatos (nombre, versión, dependencias, | + | Describe los metadatos (nombre, versión, dependencias, |
| - | Crea el comando: " | + | Crea el comando: " |
| Ejemplo: | Ejemplo: | ||
| <code python> | <code python> | ||
| Línea 220: | Línea 247: | ||
| </ | </ | ||
| + | El bloque entry_points[" | ||
| + | <code toml> | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | mi_comando → nombre que escribirás en la terminal. \\ | ||
| + | paquete.modulo → ruta al módulo dentro del paquete. \\ | ||
| + | funcion_que_se_ejecuta → debe ser una función sin argumentos (o que gestione sys.argv) que actuarán como el “main()” del comando. \\ | ||
| + | \\ | ||
| + | |||
| + | Si se desea cambiar el comando para ejecutar un programa, es suficiente con indicarlo en " | ||
| ==== readme.md ==== | ==== readme.md ==== | ||
| - | Es un archivo de texto (usualmente en formato Markdown, de ahí la extensión .md) que explica de qué trata el proyecto. | + | Es un archivo de texto (usualmente en formato Markdown, de ahí la extensión .md) que explica de qué trata el proyecto. |
| Sirve como presentación o guía rápida del proyecto. Suele incluir: | Sirve como presentación o guía rápida del proyecto. Suele incluir: | ||
| * Qué hace el software | * Qué hace el software | ||
| Línea 256: | Línea 296: | ||
| - | No es obligatorio incluirlo, pero sin licencia, legalmente nadie puede usar tu código, aunque esté en GitHub. | + | No es obligatorio incluirlo, pero sin licencia, legalmente nadie puede usar tu código, aunque esté en GitHub. |
| Pueden encontrarse en sus respectivas páginas web. | Pueden encontrarse en sus respectivas páginas web. | ||
| Línea 280: | Línea 320: | ||
| </ | </ | ||
| - | El instalador añade el comando (el nombre que hayas puesto en entry_points) al PATH de tu entorno Python. | + | El instalador añade el comando (el nombre que hayas puesto en entry_points) al PATH de tu entorno Python. |
| Además, la carpeta desde donde haces la instalación en modo editable (pip install -e .) es, literalmente, | Además, la carpeta desde donde haces la instalación en modo editable (pip install -e .) es, literalmente, | ||
| Por eso cualquier cambio en esa carpeta afecta directamente al paquete instalado y ejecutable, sin necesidad de reinstalar. | Por eso cualquier cambio en esa carpeta afecta directamente al paquete instalado y ejecutable, sin necesidad de reinstalar. | ||
| + | |||
| + | ==== Local en otro equipo ==== | ||
| + | Lógicamente si se lleva el paquete a otro equipo, podría instalarse de la forma anterior.\\ | ||
| + | Sin embargo, también podría instalar se esta manera: | ||
| + | <code bash> | ||
| + | pip install . # Sustituye ' | ||
| + | </ | ||
| + | |||
| + | Al prescindir del parámetro ' | ||
| + | En este caso, la ejecución del programa ya no depende de la carpeta de instalación original y es posible mover, borrar o renombrar la carpeta del proyecto, y el comando seguirá funcionando igual, porque ya tiene su copia interna. | ||
| + | |||
| + | ==== Desde GitHub ==== | ||
| + | Puedes instalar tu paquete desde cualquier máquina con: | ||
| + | <code bash> | ||
| + | pip install git+https:// | ||
| + | </ | ||
| + | |||
| + | O para una versión específica: | ||
| + | <code bash> | ||
| + | # Esto instalará la versión exactamente como estaba en el tag v1.0.0. | ||
| + | pip install git+https:// | ||
| + | </ | ||
| + | |||
| + | Desde GitHub, el programa se instala en modo no editable. \\ | ||
| + | |||
| + | Cada vez que se realice una mejora, corrección o cambio relevante, se hace un //commit// con un mensaje descriptivo. \\ | ||
| + | Al completar un conjunto de cambios estables (por ejemplo, una versión funcional completa), se hace un release/tag con un número de versión: | ||
| + | <code bash> | ||
| + | git tag v1.0.0 | ||
| + | git push origin v1.0.0 | ||
| + | # Ahora en GitHub aparece ese tag como versión 1.0.0. Puedes descargar ese estado exacto o instalar desde ahí. | ||
| + | </ | ||
| + | |||
| + | Y para actualizar a la nueva versión (por ejemplo la v1.1.0): | ||
| + | <code bash> | ||
| + | pip install --upgrade git+https:// | ||
| + | </ | ||
python/instalable.1752576475.txt.gz · Última modificación: por alberto
