最近在用streamlit实现完成项目的时候,遇到一个大坑,就是如果将streamlit工程打包成exe
①、首先需要在工程目录下新建一个“hooks”的文件夹
并且在此文件夹下新建一个“hook-streamlit.py”的文件,内容如下
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata('streamlit')
②、用常用的命令来执行打包操作
pyinstaller --onefile -w --icon=.\icon2.ico --distpath=.\ --name=streamlit_test streamlit_test.py
在执行过程中将会报如下错误:
File "/opt/miniconda/envs/app/lib/python3.8/inspect.py", line 985, in getsource
lines, lnum = getsourcelines(object)
File "/opt/miniconda/envs/app/lib/python3.8/inspect.py", line 967, in getsourcelines
lines, lnum = findsource(object)
File "/opt/miniconda/envs/app/lib/python3.8/inspect.py", line 798, in findsource
raise OSError('could not get source code')
OSError: could not get source code
③、找到项目中刚才生成的streamlit_test.spec文件
增加修改如下部分内容
from PyInstaller.utils.hooks import col