python windows python-3.x pandas pyinstaller

python - Ningún módulo llamado ''pandas._libs.tslibs.timedeltas'' en PyInstaller



windows python-3.x (4)

Logré resolver este problema usando el indicador "--hidden-import". Esperemos que esto pueda ser útil para alguien más que se encuentre con este hilo.

pyinstaller --onefile --hidden-import pandas._libs.tslibs.timedeltas myScript.py

Estoy tratando de envolver un script de Python en un exe usando PyInstaller (versión de desarrollo) para Windows.

El script usa Pandas y he estado encontrando un error al ejecutar el exe.

Traceback (most recent call last): File "site-packages/pandas/__init__.py", line 26, in <module> File "C:/Users/Eddie/Anaconda3/lib/site-packages/PyInstaller/loader/pyimod03_importers.py", line 631, in exec_module exec(bytecode, module.__dict__) File "site-packages/pandas/_libs/__init__.py", line 4, in <module> File "C:/Users/Eddie/Anaconda3/lib/site-packages/PyInstaller/loader/pyimod03_importers.py", line 714, in load_module module = loader.load_module(fullname) File "pandas/_libs/tslib.pyx", line 1, in init pandas._libs.tslib ModuleNotFoundError: No module named ''pandas._libs.tslibs.timedeltas'' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "G5k Version file Extract (with tkinter).py", line 15, in <module> File "C:/Users/Eddie/Anaconda3/lib/site-packages/PyInstaller/loader/pyimod03_importers.py", line 631, in exec_module exec(bytecode, module.__dict__) File "site-packages/pandas/__init__.py", line 35, in <module> ImportError: C extension: No module named ''pandas._libs.tslibs.timedeltas'' not built. If you want to import pandas from the source directory, you may need to run ''python setup.py build_ext --inplace --force'' to build the C extensions first.

He intentado hacer esto para programas sin pandas y todo estuvo bien.

Esto es muy similar a otra pregunta ya resuelta para Python 2, pero estoy usando Python 3 y esa solución no se aplica de la misma manera debido al formato de archivo .spec modificado.

Python 3.6
PyInstaller - versión 3.3
Pandas - versión 0.20.3


No estoy seguro de que pueda ayudarlo, pero seguir la solución en la publicación que menciona funciona para mí con python 3.6 pyinstaller 3.3 y pandas 0.21.0 en Windows 7.

Entonces, agregue esto al archivo de especificaciones justo después del análisis:

def get_pandas_path(): import pandas pandas_path = pandas.__path__[0] return pandas_path dict_tree = Tree(get_pandas_path(), prefix=''pandas'', excludes=["*.pyc"]) a.datas += dict_tree a.binaries = filter(lambda x: ''pandas'' not in x[0], a.binaries)

Además, mi formato de archivo de especificaciones es el mismo que el de la publicación que mencionas .


PyInstaller 3.3, Pandas 0.21.0, Python 3.6.1.

Pude resolver esto gracias a la corrección aún no publicada / comprometida de PyInstaller, vea this y this . Y manteniendo la capacidad de empaquetarlo en un archivo ejecutable.

Básicamente

  1. Localice la carpeta PyInstaller .. / hooks, por ejemplo, C:/Program Files/Python/Lib/site-packages/PyInstaller/hooks .

  2. Cree el archivo hook-pandas.py con contenido (o algo similar basado en su error):

    hiddenimports = [''pandas._libs.tslibs.timedeltas'']

  3. Guárdelo + eliminé el archivo .spec, compile y dist las carpetas solo para estar seguro.

  4. Ejecute pyinstaller -F my_app.py.

Esta solución debería funcionar siempre que no actualice o reinstale PyInstaller. Por lo tanto, no necesita editar el archivo .spec.

¡Quizás incluyan la solución antes para nosotros! :)


Si está utilizando Anaconda, es muy probable que cuando intentara desinstalar algún paquete, haya interrumpido la dependencia de los pandas y no pueda obtener el script requerido. Si solo ejecuta conda install pandas , podría terminar con otro error:

module ''pandas'' has no attribute ''compat'' .

Por lo tanto, intente desinstalar y reinstalar pandas conda uninstall pandas , conda install pandas nuevamente usando conda install pandas esto resolverá el problema. Por otro lado, si no está utilizando Anaconda., Intente hacer lo mismo en el símbolo del sistema apuntando a la carpeta de scripts Python pip uninstall pandas & pip install pandas .

La mayoría de las veces, esto debería resolver el problema. Solo para cubrir todas las posibilidades, no olvide lanzar Spyder desde Anaconda después de instalar pandas.