Agregue a: ¿Cómo protejo mi base de código de Python para que los invitados no puedan ver ciertos modules pero todavía funciona?

¿Cómo protejo mi base de código de Python para que los invitados no puedan ver ciertos modules, pero todavía funciona?

Mi pregunta es una pregunta agregada publicada en la página anterior.

Si hay dos directorys svn; por ejemplo, los usuarios src / private y src / public e internal tendrán directorys públicos y privados y las cosas funcionarán bien.

Los usuarios públicos solo tendrán src / public. ¿Es posible importar src / private en init .py aunque el usuario no lo haya desprotegido? El usuario debería poder vincularse a él para resolver cualquier dependencia funcional en src / private, pero no debería poder ver el contenido de los files.

¿Hay alguna otra solución para este problema?

Renunciar a ella. Es esencialmente imposible mantener los ojos curiosos afuera. Por ejemplo, mira el module dis :

import dis def foo(): print 'bar' dis.dis(foo) 

que rendiría:

   1 0 LOAD_CONST 1 ('bar')
               3 PRINT_ITEM          
               4 PRINT_NEWLINE       
               5 LOAD_CONST 0 (Ninguno)
               8 RETURN_VALUE   

Voila: hay cadenas que querías ocultar, simplemente importando tus modules. Hay otros modules y services que pueden hacer un buen trabajo al convertir dichos desensambles en un código de Python legible.

¿Qué estás tratando de lograr exactamente? Es decir, ¿qué estás tratando de proteger específicamente?

Siempre puede mover la funcionalidad principal a algún module C o C ++ y distribuir solo la versión comstackda del module.

Ver http://docs.python.org/extending/extending.html