【问题标题】:mod_wsgi - Fatal Python error: initfsencoding: unable to load the file system codecmod_wsgi - 致命的 Python 错误:initfsencoding:无法加载文件系统编解码器
【发布时间】: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。接受任何提示/建议。

标签: python apache redhat wsgi


【解决方案1】:

当我最近遇到这个问题时,我找到了一个适用于我的环境的解决方案。
我不使用虚拟环境,但在我的主文件夹中有一个非标准的 python 安装(在没有 root 访问权限的情况下编译和安装) - 这应该类似于虚拟环境。

我的虚拟主机配置结构如下:

WSGIPythonHome /home/myuser/usr/
<VirtualHost *:80>
    ...
    WSGIDaemonProcess wsgi home=/path/to/my/project/folder processes=10 threads=10
    WSGIScriptAlias / /path/to/my/project/folder/wsgi.py
    WSGIProcessGroup wsgi
</VirtualHost>

首先,我完全省略了 python-path。此外,WSGIPythonHome 应该指向带有 python 库的bin/lib/include/ 目录的父文件夹。 我错误地将其指向bin/ 文件夹。 因此,WSGI 无法加载默认库,即使我通过 WSGIPythonPath 手动将它们添加到 python 路径。

【讨论】:

    【解决方案2】:

    我遇到了一个非常相似的问题,我发现我手动指定的 LoadModule wsgi_module "/path_to_conda/" 被忽略了,因为正在加载以前的 apache-wide wsgi mod。您可以检查wsgi.* 是否存在于/etc/apache2/mods-enabled 中。

    如果是这种情况,请考虑使用a2dismod wsgi 禁用加载错误 python 的 apache wsgi。

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2015-08-26
      • 2018-12-26
      • 2020-07-03
      • 2017-10-17
      相关资源
      最近更新 更多