Apache下mod_wsgi运行pywps Flask应用报ModuleNotFoundError求助
问题排查及解决方案
mod_wsgi与Python版本不匹配
Windows平台下mod_wsgi是绑定特定Python版本编译的,即使你系统装了Python3.9.6,如果mod_wsgi是对应其他Python版本编译的,运行时会自动加载对应版本的Python解释器,无法读取你Python3.9下安装的依赖。
解决方法:在PowerShell中执行mod_wsgi-express module-config,将输出的所有配置项完整替换Apache配置中mod_wsgi的加载配置,确保mod_wsgi加载的是你安装了pywps的Python解释器。Apache运行用户权限不足
Apache服务默认使用本地系统账户运行,如果你将pywps等依赖安装在当前登录用户(Jdoe)的个人目录下的Python路径中,本地系统账户没有读取权限,就会找不到模块。
解决方法:打开Windows服务管理器,找到Apache服务,将其运行账户修改为你当前登录的Jdoe用户,重启Apache服务即可。手动指定Python包搜索路径
可以直接在wsgi文件的最开头手动添加依赖所在的site-packages路径,强制Python优先从该路径加载模块:
import sys # 下方路径替换为你实际的Python3.9 site-packages路径,可在PowerShell执行`python -c "import site; print(site.getsitepackages())"`获取 sys.path.insert(0, r"C:\Users\Jdoe\AppData\Local\Programs\Python\Python39\Lib\site-packages") # 原有wsgi代码从这里开始 from pathlib import Path import pywps from pywps import Service ...
内容的提问来源于stack exchange,提问作者jdoe
相关产品推荐
相关产品推荐

