Repository URL to install this package:
|
Version:
0.2.0 ▾
|
| sincpro_py_compiler |
| LICENSE |
| README.md |
| pyproject.toml |
| PKG-INFO |
Una herramienta simple y efectiva para compilar proyectos Python (.py → .pyc) y distribuir código compilado de forma segura.
pip install sincpro-py-compiler
O desde el código fuente:
git clone https://github.com/Sincpro-SRL/sincpro_py_compiler.git cd sincpro_py_compiler poetry install
# Compilar proyecto básico sincpro-compile ./mi_proyecto # Especificar directorio de salida sincpro-compile ./mi_proyecto -o ./compilado # Usar template para Django sincpro-compile ./mi_django_app -t django # Usar template para Odoo sincpro-compile ./mi_addon_odoo -t odoo # Ver templates disponibles sincpro-compile --list-templates
SincPro Python Compiler ahora incluye funcionalidades de seguridad para proteger tu código compilado mediante compresión con contraseña o encriptación simple. Esto es especialmente útil para la distribución comercial donde necesitas una licencia/contraseña para acceder al código.
# Compilar y comprimir con contraseña sincpro-compile ./mi_proyecto --compress --password "mi_licencia_comercial" # Resultado: mi_proyecto_compilado.zip (protegido)
# Compilar y encriptar con contraseña sincpro-compile ./mi_proyecto --encrypt --password "clave_secreta" # Resultado: mi_proyecto_compilado.enc (encriptado)
Para usar código protegido, utiliza el comando de desprotección:
# Descomprimir código protegido sincpro-decrypt ./codigo_protegido.zip --password "mi_licencia_comercial" -o ./codigo_desprotegido # Desencriptar código protegido sincpro-decrypt ./codigo_protegido.enc --password "clave_secreta" -o ./codigo_desprotegido
A partir de la versión actual, SincPro Python Compiler permite definir archivos y carpetas que serán copiados fielmente (sin compilar ni excluir) según el template seleccionado.
Por ejemplo, en el template odoo, los siguientes archivos y carpetas se copian tal cual al directorio de salida:
__manifest__.py__openerp__.pystatic/data/demo/security/Esto es útil para mantener la integridad de archivos requeridos por Odoo y otros frameworks, evitando su compilación o exclusión.
Puedes definir archivos y carpetas adicionales para copiar fielmente usando la opción:
sincpro-compile ./mi_proyecto --copy-faithful-file mi_copias_fieles.txt
El archivo debe contener un patrón por línea, por ejemplo:
# Copias fieles personalizadas
config.json
assets/
logo.png
Estos patrones se suman a los definidos por el template seleccionado.
Además de usar archivos de patrones, puedes pasar patrones directos o una lista separada por comas con la opción:
sincpro-compile ./mi_addon_odoo --copy-faithful-file __manifest__.py -o ./dist
O múltiples patrones:
sincpro-compile ./mi_addon_odoo --copy-faithful-file "__manifest__.py,config.json,logo.png" -o ./dist
Esto copiará fielmente los archivos y carpetas indicados, sin necesidad de crear un archivo de patrones.
También puedes seguir usando archivos de texto o archivos Python (.py) con la variable COPY_FAITHFUL_PATTERNS para definir múltiples patrones.
sincpro-compile ./mi_addon_odoo -t odoo
En este caso, los archivos .py se compilan a .pyc, los archivos definidos como "copias fieles" se copian tal cual, y el resto se excluye según el template.
Puedes personalizar los templates o agregar tus propios patrones en la carpeta resources/exclude_patterns/.
sincpro-compile ./mi_app -t basic
sincpro-compile ./mi_django_project -t django -o ./dist
sincpro-compile ./mi_addon -t odoo -o ./compilado
basic - Proyecto Python básicoExcluye:
__pycache__/, *.pyc.git/, .venv/, venv/, env/django - Proyecto DjangoIncluye exclusiones básicas más:
migrations/static/, media/db.sqlite3odoo - Addon OdooIncluye exclusiones básicas más:
__manifest__.py, __openerp__.pystatic/, data/, demo/security/Crea un archivo con patrones de exclusión (uno por línea):
# Mi archivo de exclusiones personalizadas *.log temp/ config/secret.py docs/
Úsalo con:
sincpro-compile ./proyecto -e mi_exclusiones.txt
sincpro-compile [directorio] [opciones] Opciones: -o, --output DIR Directorio de salida (default: ./compiled) -t, --template TEMPLATE Template: basic, django, odoo (default: basic) -e, --exclude-file FILE Archivo personalizado de exclusiones --list-templates Mostrar templates disponibles -v, --verbose Mostrar información detallada -h, --help Mostrar ayuda
# Compilar y generar distribución limpia sincpro-compile ./mi_app -o ./dist -t basic
# Compilar addon excluyendo manifests y archivos de datos sincpro-compile ./mi_addon -t odoo -o ./cliente_dist
# Compilar excluyendo migraciones y archivos estáticos sincpro-compile ./mi_web -t django -o ./produccion
from sincpro_py_compiler.infrastructure.python_compiler import PythonCompiler # Crear instancia del compilador compiler = PythonCompiler() # Compilar proyecto success = compiler.compile_project( source_dir="./mi_proyecto", output_dir="./compilado", template="basic" ) if success: print("¡Compilación exitosa!")
El compilador mantiene la estructura original del proyecto:
mi_proyecto/
├── app.py
├── utils.py
├── config.xml
└── static/
└── style.css
# Después de compilar:
compilado/
├── app.pyc # Compilado
├── utils.pyc # Compilado
├── config.xml # Copiado tal como está
└── static/
└── style.css # Copiado tal como está
.py a .pyc.pyc pueden ser descompiladosMIT License - ver archivo LICENSE para detalles.
Desarrollado por Sincpro SRL para distribución segura de código Python.