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