ImportError con Pyinstaller y Pandas

Estoy tratando de agrupar un script corto de python en un solo ejecutable. Soy capaz de ejecutar pyinstaller con éxito

pyinstaller script.py 

Sin embargo, cuando ejecuto el ejecutable obtengo el siguiente error. Lo he intentado todo y nada parece funcionar.

 C:\Users\...\Python\dist\script>script Traceback (most recent call last): File "", line 2, in  File "c:\users\user\appdata\local\temp\pip-build-0pjuke\pyinstaller\PyInst aller\loader\pyimod03_importers.py", line 363, in load_module File "c:\python27\lib\site-packages\pandas\__init__.py", line 13, in  "extensions first.".format(module)) ImportError: C extension: lib not built. If you want to import pandas from the s ource directory, you may need to run 'python setup.py build_ext --inplace' to bu ild the C extensions first. script returned -1 

Aquí están las importaciones en mi guión:

 import pandas from simple_salesforce import Salesforce from pandas import Series, DataFrame import vertica_python from StringIO import StringIO 

Edite su archivo .spec para agregar las líneas que se muestran a continuación justo después de la parte a = Analysis part . Luego compile utilizando el --onefile flag – por ejemplo, pyinstaller --onefile my_project.spec

 a = Analysis(...) # Add the following 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) 

La razón por la que esto es necesario es porque PyInstaller está agarrando el código de los pandas python, pero no atrapando la lib. Esto significa que cuando el código de pandas se ejecuta (desde ‘dentro’ del ejecutable) no puede encontrar la biblioteca, por lo que trata de ser útil y sugiere que necesites construirlo.

La solución se detalla en http://github.com/pyinstaller/pyinstaller/issues/1580 . Parece que puede no funcionar para todas las versiones / sistemas operativos, así que mucha suerte.

El error

 ImportError: C extension: lib not built. 

Claramente le dice que ejecute python setup.py build_ext --inplace . para construir las extensiones C