Web2Py无法导入requests模块求助:Python环境可正常访问该模块
排查步骤
1. 彻底清理web2py及Python编译缓存
web2py会自动编译py文件生成pyc缓存,Python也会生成__pycache__目录,直接清理所有相关缓存:
- 进入web2py根目录执行:
rm -rf applications/*/cache/*.pyc rm -rf cache/*.pyc find . -name "__pycache__" -type d -exec rm -rf {} +
2. 确认web2py使用的Python解释器
检查虚拟环境的Python路径,确保web2py调用的是虚拟环境内的解释器:
- 在pipenv shell中执行
which python,得到虚拟环境的Python绝对路径(比如/home/user/.local/share/virtualenvs/xxx/bin/python) - 修改web2py启动脚本
web2py.py的第一行,替换为上述绝对路径:#!/home/user/.local/share/virtualenvs/xxx/bin/python
3. 验证web2py的sys.path配置
在web2py交互环境中直接查看路径列表,确认虚拟环境site-packages是否存在:
- 启动web2py交互环境后执行:
import sys print(sys.path) - 如果未找到虚拟环境site-packages路径,手动添加测试:
import sys sys.path.insert(0, "/home/user/.local/share/virtualenvs/xxx/lib/python3.7/site-packages") import requests # 验证是否还报错
4. 重新安装依赖到虚拟环境
强制在虚拟环境内重新安装依赖,避免全局安装干扰:
- 在pipenv shell中执行:
pip install requests msal - 执行
pip freeze确认requests和msal出现在依赖列表中。
5. 关闭web2py沙箱模式
web2py默认沙箱机制可能限制模块导入,尝试关闭沙箱启动:
python web2py.py --no-sandbox
6. 排查应用私有目录干扰
暂时移走applications/[你的应用名]/private目录下的所有py文件,测试是否是自定义代码干扰了模块导入。
内容的提问来源于stack exchange,提问作者user2070364
相关产品推荐
相关产品推荐

