Saltar al contenido

Importación de un módulo externo en un archivo exe de un solo archivo creado con PyInstaller

Nuestro team de trabajo ha estado horas investigando la resolución a tu interrogante, te compartimos la solución de modo que esperamos resultarte de mucha apoyo.

Solución:

Los siguientes pasos permiten un módulo de Python (llamado module_name aquí) fuera de un ejecutable creado por PyInstaller para ser importado y para que ese módulo importe módulos que se incluyeron en el ejecutable.

  • Agregar excludes=['module_name'] al objeto de análisis utilizado en la especificación PyInstaller. Esto previene module_name.py siendo incluido en el ejecutable.
  • Agregar sys.path.append(os.path.dirname(sys.executable)) dónde module_name se importa en su aplicación. Esto permite importarlo desde el directorio en el que se encuentra el ejecutable, que es diferente al directorio en el que se ejecutará la aplicación (debido a que se descomprime en una carpeta temporal).
  • Asegúrese de que cualquier importación realizada por el módulo externo también sea realizada por uno de los módulos incluidos. antes de el externo es importado. El interprete no lo haré resolver las importaciones del módulo externo contra los módulos empaquetados, pero voluntad utilizar los que ya existen en sys.modules.

Como ejemplo del punto final, considere lo siguiente.

# bundled_module1.py
import external_module
# bundled_module2.py
# module content
# external_module.py
import bundled_module2

Esto fallará en external_module.py porque no se puede encontrar el módulo importado. Sin embargo, lo siguiente funcionará:

# bundled_module1.py
import bundled_module2
import external_module
# bundled_module2.py
# module content
# external_module.py
import bundled_module2

Esto estará bien si hay un conjunto limitado de módulos incluidos que el externo debería poder importar. Puede volverse difícil de manejar para conjuntos más grandes.

Dado que la documentación establece que el intérprete voluntad resuelve las importaciones contra los módulos incluidos en el ejecutable, esto se siente como un posible error. Sin embargo, la interoperabilidad con módulos fuera del ejecutable no se menciona explícitamente.

Aquí puedes ver las comentarios y valoraciones de los usuarios

Acuérdate de que tienes la capacidad de valorar este enunciado si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *