desplegando aplicaciones python

¿Es posible implementar aplicaciones de python de manera que no libere el código fuente y no tenga que asegurarse de que el cliente tenga instalado python?

¿Estoy pensando que tal vez haya algún proceso de instalación que pueda ejecutar una aplicación de Python solo desde los archivos .pyc y una biblioteca compartida que contenga el intérprete o algo así?

Básicamente, estoy interesado en obtener los beneficios de desarrollo de un lenguaje como Python: alta productividad, etc., pero no veo cómo podría implementarlo profesionalmente a un cliente donde no sabe cómo está configurada la máquina y definitivamente No se puede entregar la fuente.

¿Cómo lo hacen las casas de software profesionales que se desarrollan en Python (o quizás la respuesta es que no)?

  1. Usted protege su código fuente legalmente , no tecnológicamente . Distribuir archivos py realmente no es un gran problema. La única solución tecnológica aquí es no enviar su progtwig (que en realidad se está volviendo más popular en estos días, ya que el software se proporciona a través de Internet en lugar de instalarse localmente con mayor frecuencia).

  2. Si no quieres que el usuario tenga que tener instalado Python pero quieres ejecutar progtwigs de Python, deberás agrupar Python. Tu resistencia a hacerlo me parece bastante extraña. Los progtwigs Java deben agrupar o anticipar la presencia de JVM. Los progtwigs de C tienen que agrupar o anticipar la presencia de libc (generalmente la última), etc. No hay nada de intrépido en cuanto a usar lo que necesita.

  3. El software profesional de escritorio Python agrupa a Python, ya sea a través de algo como py2exe / cx_Freeze / algo interno que hace lo mismo o mediante la incorporación de Python (en cuyo caso Python se presenta como una biblioteca en lugar de un ejecutable). El primer enfoque suele ser mucho más potente y robusto.

Sí, es posible hacer paquetes de instalación. Busque py2exe , cx_freeze y otros.

No, no es posible mantener el código fuente completamente seguro. Siempre hay formas de descomstackr.
El código fuente original se puede obtener de forma trivial de los archivos .pyc si alguien quiere hacerlo. La ofuscación de código haría más difícil hacer algo con el código.

Bueno, depende de lo que quieras hacer. Si al “no liberar el código fuente” quiere decir “el cliente no debería poder acceder al código fuente de ninguna manera”, bueno, está luchando una batalla perdida. Incluso los progtwigs escritos en C pueden tener ingeniería inversa, después de todo. Si tiene miedo de que alguien le robe, hágales firmar un contrato y demandarlo si hay problemas.

Pero si te refieres a “el cliente no debería preocuparse por los archivos de Python y no puede acceder a ellos de forma casual”, puedes usar una solución como cx_Freeze para convertir tu aplicación de Python en un ejecutable.

Me sorprende que nadie haya mencionado esto antes, pero Cython parece ser una solución viable para este problema. Tomará su código Python y lo transstackrá en un código C compatible con CPython. También obtienes un pequeño aumento de velocidad (~ 25% la última vez que lo verifiqué) ya que se comstackrá en un código de máquina nativo en lugar de solo en el código de byte de Python. Aún debe asegurarse de que el usuario tenga Python instalado (ya sea haciendo que sea un requisito previo para que el usuario lo maneje, o agruparlo como parte del proceso del instalador). Además, debe tener al menos una pequeña parte de su aplicación en Python puro: el gancho en la función principal.

Entonces necesitarías algo básico como esto:

 import cython_compiled_module if __name__ == '__main__': cython_compiled_module.main() 

Pero esto efectivamente no pierde detalles de implementación. Creo que el uso de Cython debería cumplir con los criterios de la pregunta, pero también introduce la complejidad adicional de comstackr en C, que pierde algo de la sencilla naturaleza multiplataforma de Python. Si eso vale la pena o no depende de ti.

Como han dicho otros, incluso el código C comstackdo resultante podría descomprimirse con un poco de esfuerzo, pero es probable que sea mucho más parecido al tipo de ofuscación que inicialmente esperaba.

Construye una aplicación web en python. Entonces el mundo puede usarlo a través de un navegador con cero instalación.