У меня была точно такая же проблема, и я нашел другое решение (на самом деле единственное, которое сработало для меня):
Я следил примерно за этим: 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:
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