Hay muchas, muchas, muchas, muchas, muchas, muchas, muchas formas de hacer esto. Voy a patinar sobre los principios detrás de cada uno, y es un caso de uso.
1. Un entorno python
Hay muchas maneras de hacer esto. pipenv
, conda requirments.txt
, etc. etc.
Con algunos de estos, puede especificar versiones de Python. Con otros, solo especifique un rango de versiones de python con las que sabe que funciona: por ejemplo, si está usando python 3.7, es poco probable que no sea compatible con 3.6; solo hay uno o dos cambios menores. 3.8 debería funcionar también.
Otro método similar es setup.py
. En general, se usan para distribuir bibliotecas, como PyInstaller (otra solución que mencionaré a continuación), o numpy, o wxPython, o PyQt5, etc. - para el uso de la línea de importación / comando. La guía de empaquetado de Python es bastante útil, y hay muchos tutoriales disponibles. (google python setup.py tutorial
) También puede especificar requisitos en estos archivos.
2. Un contenedor
Docker es el grande. Si no has oído hablar de eso, me sorprenderé. Con esto aparece un resumen rápido de google , que citaré parte de:
Entonces, ¿por qué a todos les encantan los contenedores y Docker? James Bottomley, anteriormente CTO de virtualización de servidores de Parallels y un desarrollador líder de kernel de Linux, explicó que los hipervisores VM, como Hyper-V, KVM y Xen, están "basados en emular hardware virtual. Eso significa que son gordos en términos de Requisitos del sistema."
Los contenedores, sin embargo, usan sistemas operativos compartidos. Esto significa que son mucho más eficientes que los hipervisores en términos de recursos del sistema. En lugar de virtualizar hardware, los contenedores descansan sobre una única instancia de Linux. Esto significa que puede "dejar atrás la inútil basura VM del 99.9 por ciento, dejándolo con una cápsula pequeña y ordenada que contiene su aplicación".
Eso debería resumirlo para ti. (Tenga en cuenta que no necesita un sistema operativo específico para los contenedores).
3. Un archivo ejecutable
Hay 2 herramientas principales que hacen esto al momento de escribir. PyInstaller y cx_Freeze. Ambos se desarrollan activamente. Ambos son de código abierto.
Toma su script y la herramienta lo compila en bytecode, encuentra las importaciones, las copia y crea un entorno portátil de Python que ejecuta su script en el sistema de destino sin que el usuario final necesite Python.
Personalmente, prefiero PyInstaller: soy uno de los desarrolladores. PyInstaller proporciona toda su funcionalidad a través de un script de línea de comandos y es compatible con la mayoría de las bibliotecas en las que puede pensar, y es ampliable para admitir más. cx_Freeze requiere un script de configuración.
Ambas herramientas son compatibles con Windows, Linux, macOS y más. PyInstaller puede crear archivos ex, o un paquete de una carpeta, mientras que cx_Freeze solo admite paquetes de una carpeta. PyInstaller 3.6 es compatible con python 2.7 y 3.5-3.7, pero 4.0 no es compatible con python 2. cx_Freeze ha dejado de ser compatible con python 2 a partir de la última versión importante (creo que 6.0).
De todos modos, lo suficiente sobre las características de las herramientas; usted puede mirar en esos usted mismo. (Consulte https://pyinstaller.org y https://cx-freeze.readthedocs.io para obtener más información)
Cuando usa este método de distribución, generalmente proporciona el código fuente en el repositorio de GitHub, un par de exes (uno para cada plataforma) listos para descargar e instrucciones sobre cómo construir el código en un archivo ejecutable.