用PyInstaller -onedir打包的Streamlit应用在无Python环境运行报错求助
解决PyInstaller打包Streamlit应用后无Python环境下的asyncio NameError问题
针对你遇到的NameError: name 'base_events' is not defined错误,以下是几个可行的解决方法:
显式指定asyncio的隐藏依赖
PyInstaller自动收集依赖时可能漏了asyncio的核心子模块,打包时用--hidden-import参数强制导入:pyinstaller --onedir --hidden-import asyncio.base_events --hidden-import asyncio.protocols --hidden-import asyncio.tasks your_streamlit_app.py升级PyInstaller到最新版本
旧版PyInstaller对新版Python的asyncio支持可能有问题,先升级再打包:pip install --upgrade pyinstaller使用自定义启动脚本打包
直接打包Streamlit脚本可能存在依赖收集不全的情况,写一个启动脚本(比如run_app.py):import streamlit.web.cli as stcli import sys if __name__ == "__main__": sys.argv = ["streamlit", "run", "your_main_app.py", "--server.headless=true"] stcli.main()然后打包这个启动脚本,同时加上必要的隐藏依赖:
pyinstaller --onedir --collect-all streamlit --hidden-import asyncio.base_events run_app.py检查Python版本兼容性
确保打包时使用的Python版本和目标机器的系统架构匹配(比如不要用32位Python打包给64位系统),避免因架构不兼容导致的模块加载失败。
内容的提问来源于stack exchange,提问作者AstigX Tutorials
相关产品推荐
相关产品推荐

