python - mod_wsgi : ImportError: No module named 'encodings'

标签 python apache centos mod-wsgi selinux

我在 CentOS 6.5 上使用 Apache 2.2.15。我正在尝试使用 mod_wsgi 设置 Django 应用程序。 我正在使用虚拟环境,并且 mod_wsgi 配置为 --with-python=/path/to/virtualenv/bin/python3.4

我已将此添加到我的 httpd.conf:

WSGIPythonPath /srv/myproject:/path/to/virtualenv/lib/python3.4/site-packages
WSGIPythonHome /path/to/virtualenv
<VirtualHost *:80>
WSGIScriptAlias / /srv/myproject/myproject/wsgi.py
...
</VirtualHost>

wsgi.py中,我添加了

sys.path.insert(1, "/path/to/virtualenv/lib/python3.4/site-packages")

问题是,当我尝试在浏览器中打开该应用程序时,它会无限期地加载。这是 Apache 错误日志:

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
[Mon Jun 30 17:37:28 2014] [notice] child pid 19370 exit signal Aborted (6)
[Mon Jun 30 17:37:28 2014] [notice] child pid 19371 exit signal Aborted (6)
...
[Mon Jun 30 17:37:28 2014] [notice] child pid 19377 exit signal Aborted (6)
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

有意思的是,无论是系统安装的Python(2.6)还是虚拟环境版本(3.4),import encodings都可以正常使用!我尝试使用来自 the mod_wsgi CheckingYourInstallation page 的示例 WSGI 脚本确认 Apache 使用的是哪个版本的 Python,但我得到了相同的 ImportError。

有人对下一步有什么建议吗?我已经搜索了文档,但我不知道从这里去哪里。

最佳答案

因此,在我 friend (即:系统管理员)的帮助下,我们昨晚解决了这个问题。我通过示例学习得最好,所以假设您正在运行带有 mod_wsgi 的 Apache 作为 Linux 组 apache 和用户 flipperpa。假设您在/home/my_project 中托管,wsgi.py 在 my_project/wsgi.py 中。

在顶层(ls -l/):

drwxr-xr-x.  47 root root  4096 Jul  9 09:43 home

在主目录中 (ls -l/home):

drwxrwsr-x   7 flipper        apache 4096 Jul 29 10:22 my_project

这是关键。小写的“s”表示设置了 apache 组的 setgid 位,并且设置了执行位。当然,最后的“x”表示任何人都可以执行。

检查树下的权限;这对我们有用。

关于python - mod_wsgi : ImportError: No module named 'encodings' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495348/

相关文章:

php - 重定向到请求子文件夹的 index.php

Tomcat 的 Apache (httpd) 代理不断超时

CentOS机器安装JMeter显示错误

python - 如何解决二进制模式不采用编码参数

'Verifiable Canonical Generation of the Generator g' 的 Python 代码,FIPS 186-4,返回 False

python - 将数字中的数字配对

python - `except` 子句中的名称绑定(bind)在子句之后删除

python - site.addsitedir 未完全处理 .pth 文件

tomcat - 在 docker centos 中启动 tomcat 服务器时出错

linux - etx4 文件系统和最大 inode 计算