【发布时间】:2019-11-26 16:22:42
【问题描述】:
使用 Red Hat、apache 2.4.6、worker mpm、mod_wsgi 4.6.5 和 Python 3.7 当我启动 httpd 时出现上述错误:
ModuleNotFoundError: No module named 'encodings'
在 httpd 错误日志中。
我正在使用从我的主目录下的源代码安装的 python 创建的 python 虚拟环境。我使用 --with-python= 选项从源代码安装了 mod_wsgi,该选项指向我的虚拟环境中的 python 二进制文件,然后我将 mod_wsgi.so 文件作为 mod_wsgi37.so 复制到我的 apache 模块目录中
我在这个文件上运行了 ldd,并有一个 .conf 文件将它加载到 httpd 中,如下所示:
LoadFile /home/myUser/pythonbuild/lib/libpython3.7m.so.1.0
LoadModule wsgi_module modules/mod_wsgi37.so
然后在我的虚拟主机中我有:
WSGIDaemonProcess wsgi group=www threads=12 processes=2 python-path=/var/
www/wsgi-scripts python-home=/var/www/wsgi-scripts/wsgi_env3
WSGIProcessGroup wsgi
WSGIScriptAlias /test /var/www/wsgi-scripts/test.py
来自我的虚拟环境:
sys.prefix:'/var/www/wsgi-scripts/wsgi_env3'
sys.real_prefix:'/home/myUser/pythonbuild'
当我切换到系统安装的 mod_wsgi/python 组合(从 WSGIDaemonProcess 中删除 python-home 行,并更改 .conf 文件以加载原始 mod_wsgi.so)时,它工作正常。似乎某些路径变量没有正确设置。还有另一种方法来设置我缺少的 PYTHONHOME 等变量吗?如何修复我的安装?
【问题讨论】:
-
这个问题你解决了吗?如果有,你能提供答案吗?
-
我从来没有找到解决方案。我想我暂时切换回使用系统 Python。接受任何提示/建议。