es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

APScheduler pytz-deprecation-shim no se encuentra al crear un archivo ejecutable con pyinstaller.

Al ejecutar mi archivo .exe que construí con pyinstaller, obtengo un error cada vez que uso APScheduler en el programa.

pkg_resources.DistributionNotFound: No se encontró la distribución 'pytz-deprecation-shim' y se requiere por tzlocal

Ya tuve un problema similar antes con las distribuciones: pytz, tzlocal y six, que APScheduler parece usar, pero lo pude solucionar creando un archivo hook-pytz.py, hook-tzlocal.py y hook-six.py, cada uno contiene el siguiente código con la distribución correspondiente:

from PyInstaller.utils.hooks import copy_metadata, collect_data_files

datas = copy_metadata('pytz')
datas += collect_data_files('pytz')

Cuando construyo la aplicación con pyinstaller, luego llamo a --additional-hooks-dir=. Sin embargo, ahora el mismo procedimiento no está funcionando para pytz-deprecation-shim, ya que siempre recibo el mismo error. ¿Cómo puedo solucionar el problema? Ya intenté actualizar todas esas distribuciones a la versión más nueva, pero parecen estar actualizadas.

versiones:
pytz 2021.3,
pytz-deprecation-shim 0.1.0.post0,
tzlocal 4.1,
six 1.16.0,
APScheduler 3.8.1

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el archivo hook-pytz.py no puede manejar la distribución de pytz-deprecation-shim. Una solución podría ser crear un nuevo archivo de gancho específicamente para pytz-deprecation-shim. Este nuevo archivo de gancho debe contener el siguiente código:

    from PyInstaller.utils.hooks import copy_metadata, collect_data_files
    
    datas = copy_metadata('pytz-deprecation-shim')
    datas += collect_data_files('pytz-deprecation-shim')
    

    Asegúrese de guardar este archivo como hook-pytz-deprecation-shim.py y colocarlo en el mismo directorio que los demás archivos de gancho.

    Al construir la aplicación con pyinstaller, proporcione la ruta al directorio que contiene todos los archivos de gancho utilizando la opción --additional-hooks-dir=. Por ejemplo:

    pyinstaller --additional-hooks-dir=/ruta/al/directorio/de/ganchos myscript.py
    

    Esto debería garantizar que pytz-deprecation-shim esté incluido en la distribución y evitar que ocurra el error de DistributionNotFound.

Comments are closed.