1 回答
TA贡献1813条经验 获得超2个赞
那么你还在为此苦苦挣扎吗?
您需要更新规范文件的“data”和“hiddenimports”部分,以确保库被导入。我在下面向您展示了我的(效果很好)。您需要修改它以包含 openpyxl、tkinter 和 pandas。
a = Analysis(['main.py'],
pathex=['C:\\Users\\user\\PycharmProjects\\PlotlyExample'],
binaries=[],
datas=[('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\plotly\\', 'plotly'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\kaleido\\', 'kaleido'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\pptx\\', 'pptx'),],
hiddenimports=['pandas','numpy','plotly','pptx'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
实际上,我遇到了与您关于plotly.json 相同的错误,所以我知道上述解决方案有效。:)
同样重要的是,如果您要导出静态图像,请在规范文件中包含 Kaleido 或 Orcas。我正在使用 Kaleido,因此您可以在我的规范文件设置中看到它。
然后通过以下方式运行 PyInstaller: pyinstaller main.spec --clean
其中 main.spec 是您的规范文件(更改名称)。
编辑:为了让事情变得更容易,这是我的整个规范文件:
# -*- mode: python ; coding: utf-8 -*-
# Command to compile the spec and python files
# pyinstaller main.spec --clean --onefile
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\user\\PycharmProjects\\PlotlyExample'],
binaries=[],
datas=[('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\plotly\\', 'plotly'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\kaleido\\', 'kaleido'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\pptx\\', 'pptx'),],
hiddenimports=['pandas','numpy','plotly','pptx'],
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=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main')
添加回答
举报