pyexe - pyinstaller python 3




Nenhum módulo chamado 'pandas._libs.tslibs.timedeltas' no PyInstaller (3)

Consegui resolver esse problema usando o sinalizador "--hidden-import". Espero que isso possa ser útil para alguém que se depara com este tópico.

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

Eu estou tentando envolver um script Python em um exe usando PyInstaller (versão de desenvolvimento) para windows.

O script usa Pandas e estou correndo um erro ao executar o 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.

Eu tentei fazer isso para programas sem pandas e estava tudo bem.

Isso é muito semelhante a outra pergunta já solucionada para o Python 2, mas estou usando o Python 3 e essa solução não se aplica da mesma maneira devido ao formato de arquivo .spec alterado.

Python 3.6
PyInstaller - versão 3.3
Pandas - versão 0.20.3


Eu não tenho certeza se isso pode ajudá-lo, mas seguindo a solução no post você mencionou trabalhar para mim com python 3.6 pyinstaller 3.3 e pandas 0.21.0 no windows 7.

Então, adicionando isso ao arquivo de especificações logo após a análise:

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)

Além disso, meu formato de arquivo de especificação é o mesmo que o da postagem que você mencionou .


Se você estiver usando o Anaconda, é altamente provável que, quando você estava tentando desinstalar algum pacote, ele tenha interrompido a dependência de pandas e não conseguido obter o script necessário. Se você acabou de executar o conda install pandas você pode acabar com outro erro:

module 'pandas' has no attribute 'compat' .

Então, tente desinstalar e reinstalar pandas conda uninstall pandas , instale-o novamente usando conda install pandas isso vai resolver o problema. Por outro lado, se você não estiver usando o Anaconda, tente fazer o mesmo no prompt de comando, apontando para a pasta de scripts Python, pip uninstall pandas & pip install pandas .

Na maioria das vezes, isso deve resolver o problema. Apenas para cobrir todas as possibilidades, não esqueça de lançar o Spyder do Anaconda depois de instalar os pandas.





pyinstaller