编程语言
首页 > 编程语言> > python – mod_wsgi:ImportError:没有名为’encodings’的模块

python – mod_wsgi:ImportError:没有名为’encodings’的模块

作者:互联网

我在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)中,导入编码工作正常!我已经尝试使用the mod_wsgi CheckingYourInstallation page中的示例WSGI脚本来确认Apache正在使用哪个版本的Python,但是我得到了相同的ImportError.

有没有人对后续步骤有什么建议?我已经搜过了文档,但我不知道从哪里开始.

解决方法:

所以在我朋友的帮助下(IE:SysAdmins),我们昨晚得到了这个.我通过示例最好地学习,所以让我们假设您使用mod_wsgi运行Apache作为Linux组apache并使用用户flipperpa.假设您在my_project / wsgi.py中使用wsgi.py托管/ home / my_project.

在顶层(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”意味着任何人都可以执行.

检查树下的权限;这对我们起了作用.

标签:selinux,python,centos,apache,mod-wsgi
来源: https://codeday.me/bug/20190927/1823264.html