Tengo un script simple que tiene una dependencia en dnspython para analizar archivos de zona. Me gustaría distribuir este script como .py único que los usuarios pueden ejecutar siempre y cuando tengan 2.6/2.7 instalados. No deseo que el usuario instale dependencias en todo el sitio, ya que podría haber conflictos con los paquetes/versiones existentes, ni tampoco quiero que compartan virtualenv. Me preguntaba si había una manera de insertar un paquete como dnspython dentro del script (gzip/base64) y hacer que ese script acceda a ese paquete en tiempo de ejecución. Tal vez descomprimirlo en un directorio en/tmp y agregar eso a sys.path? No estoy preocupado por la sobrecarga de inicio, solo quiero una .py con todas las dependencias incluidas que puedo distribuir.¿Hay alguna manera de incrustar dependencias dentro de una secuencia de comandos python?
Además, no habría dependencias C para compilar, solo paquetes puros de python.
Editar: El script no tiene que ser un .py. Siempre que sea un solo archivo ejecutable.
Si puede relajar la restricción de un archivo, puede simplemente empacar la biblioteca dnspython junto con su archivo .py, ya sea como un archivo zip o simplemente como un archivo independiente regular, eso resolvería el problema de la dependencia. ¿Eres inflexible acerca de tener solo 1 archivo? –
El camino hacia el infierno de la licencia está pavimentado con incrustación ... –
@MahmoudAbdelkader Supongo que eso funcionaría. Python buscaría en el directorio actual para el paquete antes de buscar en otro lado (aunque creo que este orden está cambiando en 3). Aún así, desearía que hubiera una manera de empaquetar todas las dependencias como un archivo ejecutable que el usuario puede ejecutar y no tener ningún problema. Supongo que no tiene que ser un .py. –