Shinyapps.io部署含reticulate与sklearn的Shiny应用遇模块未找到问题
解决shinyapps.io部署reticulate+sklearn时的ModuleNotFoundError问题
以下是针对你遇到问题的排查和解决步骤:
强制指定virtualenv环境
在global.R开头明确指定要使用的virtualenv路径,避免shinyapps.io默认调用系统Python环境:library(reticulate) # 替换成你创建的virtualenv名称,shinyapps.io上的默认路径为~/virtualenvs/你的环境名 use_virtualenv("~/virtualenvs/your_env", required = TRUE)也可以直接指定Python可执行文件路径,进一步锁定环境:
use_python("~/virtualenvs/your_env/bin/python", required = TRUE)检查requirements.txt的包名正确性
PyPI上scikit-learn的正式包名是scikit-learn,而非sklearn,这是常见的出错点。确保项目根目录的requirements.txt里正确声明依赖:scikit-learn==1.3.0 # 指定和本地一致的版本 numpy>=1.24.0 # 按需添加其他关联依赖本地导出依赖时可使用
pip freeze > requirements.txt,注意剔除无关包。调整Python脚本的导入顺序
避免直接导入sklearn子模块,先加载主模块再导入子模块,确保环境加载完整:import sklearn # 先加载主模块 from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score本地验证环境一致性
本地启动Shiny应用前,确保激活了对应的virtualenv,运行应用确认无报错,保证本地依赖版本和部署环境一致。核对shinyapps.io部署日志
查看完整部署日志,确认是否有Activating virtualenv: ~/virtualenvs/your_env类提示,同时检查sklearn的安装日志是否对应到该virtualenv下,而非系统环境。
内容的提问来源于stack exchange,提问作者micstr
相关产品推荐
相关产品推荐

