2008-10-02 13 views
28

Comencé una aplicación personal de python que se ejecuta en el escritorio. Estoy usando wxPython como un kit de herramientas GUI. Si hay una demanda para este tipo de aplicación, posiblemente me gustaría comercializarla.¿Cómo implemento una aplicación de escritorio Python?

No tengo conocimiento de implementar aplicaciones Python "de la vida real", aunque he usado py2exe en el pasado con un éxito variado. ¿Cómo podría ofuscar el código? ¿Puedo de alguna manera implementar solo el bytecode?

Una solución ideal no pondría en peligro mi propiedad intelectual (código fuente), no requeriría una instalación directa de Python (aunque estoy seguro de que necesitaría tener un intérprete incorporado), y sería multiplataforma (Windows , Mac y Linux). ¿Alguien sabe de alguna herramienta o recurso en esta área?

Gracias.

+3

¿Cómo se protege el código python? Bueno ... http://stackoverflow.com/questions/261638/how-do-i-protect-python-code/261817#261817 –

Respuesta

2

Vaya, hay una gran cantidad de preguntas allí:

  • Es posible ejecutar el código de bytes (.pyc) presentar directamente desde el intérprete de Python, pero no he visto ninguna herramienta de ofuscación de código de bytes disponible.

  • No estoy al tanto de cualquier "todo en uno" solución de implementación, pero:

    • Para Windows podría utilizar NSIS (http://nsis.sourceforge.net/Main_Page). El problema aquí es que mientras que OSX/* nix viene con python, Windows no. Si no está dispuesto a construir un binario con py2exe, no estoy seguro de cuáles serían los problemas de licenciamiento que rodearían la distribución del entorno de tiempo de ejecución de Python (sin mencionar los aspectos técnicos).

    • Puede empaquetar la distribución de OS X utilizando el formato "paquete", y * NIX tiene sus propias convenciones para instalar el software, normalmente una secuencia de comandos "make install".

la esperanza de que era muy útil.

+2

El bytecode de Python es de muy alto nivel y trivialmente descompilable; distribuir archivos .pyc realmente no es ninguna forma de protección en la que quiera confiar. –

+0

+1 para NSIS, lo he estado usando para uno de mis proyectos. –

+0

Y hay PyInstaller. –

12

Puede distribuir el bytecode compilado de Python (archivos .pyc) en lugar de la fuente. No puedes evitar la descompilación en Python (o en cualquier otro idioma, realmente). Puede usar un ofuscador como pyobfuscate para hacerlo más molesto para los competidores descifrar su fuente descompilada.

Como Alex Martelli dice in this thread, si desea mantener su código en secreto, no debe ejecutarlo en las máquinas de otras personas.

IIRC, la última vez que usé cx_Freeze creó una DLL para Windows que eliminó la necesidad de una instalación nativa de Python. Al menos vale la pena echarle un vistazo.

1

¿Tal vez IronPython puede proporcionarle algo? Apuesto a que esos archivos .exe/.dll pueden estar bastante bloqueados. No estoy seguro de cómo funcionan estas características en mono, por lo tanto, no tengo idea de cómo funciona esto en Linux/OS X ...

0

He estado utilizando py2exe con éxito en Windows. El código necesita ser modificado un poco para que el análisis del código recoja todos los módulos necesarios, pero aparte de eso, funciona.

En cuanto a Linux, hay varios formatos importantes de distribución:

  • DEB (Debian, Ubuntu y otros derivados)
  • RPM (RedHat, Fedora, openSuSE)

DEBS aren' Es particularmente difícil de hacer, especialmente cuando ya está utilizando distutils/setuptools. Algunos consejos se dan en the policy document, ejemplos de empaquetado Las aplicaciones de Python se pueden encontrar en el repository.

No tengo ninguna experiencia con RPM, pero estoy seguro de que hay suficientes ejemplos para encontrar.

0

Intente utilizar scraZ ofuscador (http://scraZ.me). Este es un ofuscador para bytecode, no para el código fuente. La versión gratuita tiene métodos de ofuscación buenos, pero no perfectos. La versión PRO tiene una protección muy fuerte para bytecode. (después de la ofuscación de bytecode una descompilación es imposible)

Cuestiones relacionadas