我遇到了完全相同的问题,但我找到了另一种解决方案(实际上唯一对我有用的解决方案):
我非常关注这个:https://medium.com/@liron92/pyinstaller-with-pandas-problems-solutions-and-workflow-with-code-examples-c72973e1e23f
除了我在 Anaconda 上运行我的虚拟环境。
快速分步解决方案
在开始之前:这些是我针对特定案例所遵循的步骤,您可能需要根据自己的情况进行一些调整。
1) 创建和配置您的虚拟环境
我使用 Anaconda 来创建我的环境:
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 提示窗口:
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 = [] 并添加所有隐式导入(包括 pandas)。
就我而言,我也在使用 Tkinter,所以我指定了:
hiddenimports=['pandas', 'tkinter']
4) 最后运行 pyinstaller
在同一个 Anaconda Prompt 窗口(环境已激活,在您的项目目录中):
pyinstaller main.spec
然后你就完成了!
免责声明
我看到到处有人告诉你在使用 Pyinstaller 编译 Python 项目时应该使用 --onefile,老实说,我认为你不应该这样做:它会使 *.exe 变慢。也许我错过了一些东西,所以如果你使用它,请向我解释一下。
规格
Windows 10
Anaconda 4.8.2
Python 3.7.6
Pandas 1.0.5