Actually I have found some similar question bei stackoverflow, but still not find a good answer. I have already create a build.spec to use the
“””
pyinstaller build.spec –clean
and my architecture is like that
It should not have problems, but it always showed me enter image description here ,Metadata is not packaged correctly. The solution from claude 3.5 is always add more dependencies, so that now my build.spec is
–– mode: python ; coding: utf-8 ––
block_cipher = None
a = Analysis(
['src/main.py'],
pathex=[],
binaries=[],
datas=[
('src', 'src'),
('config.cfg', '.'),
('database.sqlite', '.'),
('default_config.json', '.'),
('venv/Lib/site-packages/streamlit', 'streamlit'), # 添加 streamlit 包
],
hiddenimports=[
'streamlit',
'streamlit.web.bootstrap',
'streamlit.runtime.scriptrunner',
'streamlit.runtime.caching',
'streamlit.runtime.stats',
'streamlit.web',
'streamlit.web.cli',
'streamlit.web.server',
'streamlit.web.server.server',
'streamlit.elements',
'streamlit.elements.arrow',
'streamlit.elements.balloons',
'streamlit.elements.bokeh_chart',
'streamlit.elements.button',
'streamlit.elements.checkbox',
'streamlit.elements.code',
'streamlit.elements.color_picker',
'streamlit.elements.dataframe',
'streamlit.elements.deck_gl_chart',
'streamlit.elements.doc_string',
'streamlit.elements.empty',
'streamlit.elements.exception',
'streamlit.elements.file_uploader',
'streamlit.elements.graphviz_chart',
'streamlit.elements.iframe',
'streamlit.elements.image',
'streamlit.elements.json',
'streamlit.elements.layouts',
'streamlit.elements.line_chart',
'streamlit.elements.map',
'streamlit.elements.markdown',
'streamlit.elements.metric',
'streamlit.elements.number_input',
'streamlit.elements.plotly_chart',
'streamlit.elements.progress',
'streamlit.elements.radio',
'streamlit.elements.select_slider',
'streamlit.elements.selectbox',
'streamlit.elements.slider',
'streamlit.elements.snow',
'streamlit.elements.text',
'streamlit.elements.text_area',
'streamlit.elements.text_input',
'streamlit.elements.time_input',
'streamlit.elements.vega_lite_chart',
'streamlit.elements.video',
'streamlit.elements.write',
'can',
'google.protobuf',
'PIL',
'git',
'win32api',
'pandas',
'numpy',
'plotly',
'dpkt',
'openpyxl',
],
excludes=[],
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='Trace_Analysis',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
)
But still comes the same error. I don’t think always add new dependencies is the right way to generate the excutable, I need find a way for the end user, who dosn’t have python and don’t need to setup the environment.