使用 Red Hat、apache 2.4.6、worker mpm、mod_wsgi 4.6.5 和 Python 3.7 当我启动 httpd 时,出现上述错误:
ModuleNotFoundError: No module named 'encodings'
在 httpd error_log 中。
我正在使用从我的主目录下的源代码安装的 python 创建的 python 虚拟环境。我使用从源代码安装了 mod_wsgi--with-python=
选项指向我的虚拟环境中的 python 二进制文件,然后我将 mod_wsgi.so 文件复制到我的 apache 模块目录中,作为 mod_wsgi37.so
我对此文件运行 ldd,并有一个 .conf 文件将其加载到 httpd 中,如下所示:
LoadFile /home/myUser/pythonbuild/lib/libpython3.7m.so.1.0
LoadModule wsgi_module modules/mod_wsgi37.so
然后在我的 VirtualHost 中我有:
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
从我的虚拟环境:
系统前缀:'/var/www/wsgi-scripts/wsgi_env3'
sys.real_前缀:'/home/myUser/pythonbuild'
当我切换到系统安装的 mod_wsgi/python 组合(从 WSGIDaemonProcess 中删除 python-home 行,并更改 .conf 文件以加载原始 mod_wsgi.so)时,它工作正常。似乎某些路径变量没有正确设置。还有另一种方法可以设置我缺少的 PYTHONHOME 等变量吗?如何修复我的安装?
我有一个非常类似的问题,我发现我手动指定LoadModule wsgi_module "/path_to_conda/"
被忽略,因为之前的 apache 范围的 wsgi mod 正在加载。您可以检查是否wsgi.*
存在于/etc/apache2/mods-enabled
.
如果是这种情况,请考虑a2dismod wsgi
禁用加载错误 python 的 apache wsgi。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)