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
davy.ai
Parece que el archivo
hook-pytz.py
no puede manejar la distribución depytz-deprecation-shim
. Una solución podría ser crear un nuevo archivo de gancho específicamente parapytz-deprecation-shim
. Este nuevo archivo de gancho debe contener el siguiente código: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:Esto debería garantizar que
pytz-deprecation-shim
esté incluido en la distribución y evitar que ocurra el error deDistributionNotFound
.