当前位置: 首页 > 知识库问答 >
问题:

在WSGI模式下在Apache中接收“无模块命名编码错误”

姬天逸
2023-03-14

我遇到了“没有名为‘编码’的模块”错误。在我看来,Python虚拟环境没有正确加载。但是我还包含了wsgi文件以防万一。

0个

[Mon Mar 12 16:49:44.919934 2018] [:info] [pid 6546] mod_wsgi (pid=6546): Starting process 'abcd_server' with uid=501, gid=501 and threads=5.
[Mon Mar 12 16:49:44.920494 2018] [:info] [pid 6546] mod_wsgi (pid=6546): Python home /var/www/m.abcd.com/venv.
[Mon Mar 12 16:49:44.920556 2018] [:info] [pid 6546] mod_wsgi (pid=6546): Initializing Python.
Fatal Python error: Py_Initialize: Unable to get the locale encoding
  ModuleNotFoundError: No module named 'encodings'

1.

  • Amazon EC2 linux实例(CentOS)

2.

>

  • httpd:Apache/2.4.27(亚马逊)
  • python3:Python 3.6.2
  • httpd使用模块/wsgi.solddwsgi.so

    linux-vdso.so.1 =>  (0x00007ffe71de8000)
    libpython3.6m.so.1.0 => /usr/lib64/libpython3.6m.so.1.0 (0x00007f49a0ecf000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f49a0cb3000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f49a0aaf000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007f49a08ac000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f49a05aa000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f49a01e6000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f49a1616000)
    

    3个

    • 创建一个新用户“python\u user:python\u user”(uid=501)
    • 创建一个目录/var/www/m.abcd。com并由python_用户拥有:python_用户。此外,子目录也归python\u用户所有:python\u用户
    • 在/var/www/m.abcd下。com,创建python src、venv、html、logs、applogs等
    • python src包含安装程序。py和应用程序源文件
    • 通过运行python3-m venv venv(编辑:非python2)(设置虚拟环境)来设置venv
    • 在python src中,pip安装-e 将应用程序依赖项添加到虚拟环境

    4个

    <VirtualHost *:443>
      ......
      WSGIDaemonProcess abcd_server user=python_user group=python_user threads=5 python-home="/var/www/m.abcd.com/venv"
      WSGIProcessGroup abcd_server
      WSGIScriptAlias / "/var/www/m.abcd.com/python-src/src/abcd_server.wsgi"
    
      <Directory "/var/www/m.abcd.com/html">
        Require all granted
      </Directory>
    
      <Directory "/var/www/m.abcd.com/python-src/src">
        Require all granted
      </Directory>
      <Directory "/var/www/m.abcd.com/conf">
        Require all granted
      </Directory>
      <Directory "/var/www/m.abcd.com/applogs">
        Require all granted
      </Directory>
      <Directory "/var/www/m.abcd.com/data">
        Require all granted
      </Directory>
    
      ......
    </VirtualHost>
    

    5.

    imort os
    os.environ['P2SERVER_APP_CFG'] = '/var/www/m.abcd.com/conf/abcd_conf.yaml'
    from p2events.app import app as application
    

    6.

    7个

    [Sun Mar 11 22:16:55.898442 2018] [mpm_prefork:notice] [pid 2465] AH00163: Apache/2.4.27 (Amazon) OpenSSL/1.0.2k-fips mod_wsgi/3.5 Python/3.6.2 configured -- resuming normal operations
    

  • 共有1个答案

    慕嘉茂
    2023-03-14

    下面是我在格雷厄姆·邓普尔顿的帮助下在评论部分找到的。

    问题是来自AmazonLinux的mod_wsgi的默认安装非常旧的3.5。使用pip-3.6安装mod_wsgi(当前为4.6.2)并将其链接到httpd后,问题得到解决。

     类似资料:
    • 我们已经讲到了如何使用模块名称作为调用的一部分,来调用模块中的函数,如示例 7-7 中所示的 nested_modules 函数调用。 文件名: src/main.rs 示例 7-7:通过完全指定模块中的路径来调用函数 如你所见,指定函数的完全限定名称可能会非常冗长。所幸 Rust 有一个关键字使得这些调用显得更简洁。 Rust 的 use 关键字能将你想要调用的函数所在的模块引入到当前作用域中,

    • 问题内容: 我试图将我的网站发布在Amazon的EC2实例上,但不断出现500错误。我真的不知道为什么。 //日志文件 // Apache Config文件 //wsgi.py 问题答案: 我知道这是一个旧线程,但是我碰到了同样的问题,我不认为这是由缺少软件包引起的。由于Django核心发行版已经包含正确的wsgi处理程序。 这里的问题是,执行wsgi.py时,它会丢失你virtualenv中的站

    • 问题内容: 我开始金字塔式保护区时会得到以下堆栈跟踪: 从python REPL可以正常工作: 并从命令行导入: 删节的输出显示了我正在使用的内容: My设置为该树的根: 我在使用python 2.7的virtualenv中运行它。今天我一直在进行此工作,但我不知道问题出在哪里。一方面,对于之前出现的 一些 导入似乎还可以: __ (我将最后一行更改为绝对导入。不走运。) 我尝试过的事情: 重建v

    • 问题内容: Python安装在本地目录中。 我的目录树如下所示: 我的代码在这里: 要运行该示例,我编写,并且在代码中有: 我得到了错误: 我已经检查过了,那里有目录。另外,我在文件夹中有该文件,以向指示这是一个软件包。我在示例目录中也有一个。 我不知道为什么Python在时找不到文件。有任何想法吗?可以是权限问题吗?我需要一些执行许可吗? 问题答案: 根据你对orip帖子的评论,我想这是发生了什

    • 问题内容: 我一直在关注Sentdex的Flask教程。他使用Venv来设置他的Flask,但是没有设置Python与Venv一起使用。我已经尝试过在全球范围内安装Flask-但仍然无法正常工作。尝试浏览到服务器将返回500 Internal Server Error 我遇到了通常的错误。 errorFGL.log init.py flaskapp.wsgi fgl-database.conf 问

    • 命名模式的目标是将方法的调用,请求或者操作封装到一个单独的对象中,给我们酌情执行同时参数化和传递方法调用的能力.另外,它使得我们能将对象从实现了行为的对象对这些行为的调用进行解耦,为我们带来了换出具体的对象这一更深程度的整体灵活性. 具体类是对基于类的编程语言的最好解释,并且同抽象类的理念联系紧密.抽象类定义了一个接口,但并不需要提供对它的所有成员函数的实现.它扮演着驱动其它类的基类角色.被驱动类