Имах точно същия проблем и намерих друго решение (единственото, което всъщност работи за мен):
Проследих почти това: https://medium.com/@liron92/pyinstaller-with-pandas-problems-solutions-and-workflow-with-code-examples-c72973e1e23f
С изключение на факта, че управлявам виртуалната си среда на Anaconda.
Бързо решение стъпка по стъпка
Преди да започна: това са стъпките, които следвах за моя конкретен случай, може да искате да се адаптирате малко в зависимост от вашата ситуация.
1) Създайте и конфигурирайте вашата виртуална среда
Използвах Anaconda, за да създам моя env:
conda create --name myenv
След това инсталирах всички необходими модули:
conda install -n myenv pandas
conda install -n myenv -c conda-forge python-docx
etc.
2) Активирайте вашата среда и преминете към пътя на проекта
На Anaconda Prompt:
conda activate myenv
cd path/to/your/project/folder
3) Създайте и модифицирайте вашия *.spec файл
Все още в същия прозорец на Anaconda Prompt:
pyi-makespec project.py
След това отворете файла project.spec, той ще изглежда така:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['project.py'],
pathex=['path/to/your/project/folder'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main')
Просто модифицирате hiddenimports = []
и добавяте целия имплицитен импорт (което включва панди). В моя случай също използвах Tkinter, така че уточних:
hiddenimports=['pandas', 'tkinter']
4) Накрая стартирайте pyinstaller
В същия прозорец на Anaconda Prompt (активирана среда, в директорията на вашия проект):
pyinstaller main.spec
И тогава сте готови!
Опровержение
Виждам навсякъде хора да ви казват, че трябва да използвате --onefile
, когато компилирате проект на Python с Pyinstaller, честно казано мисля, че не трябва: това прави *.exe по-бавен. Може би пропускам нещо с това, така че, моля, обяснете ми, ако го използвате.
спецификации
Windows 10
Anaconda 4.8.2
Python 3.7.6
Pandas 1.0.5
person
Arthur
schedule
23.07.2020