【问题标题】:Django + mod_wsgi Fatal Python Error: Py_Initialize: No module named EncodingsDjango + mod_wsgi 致命 Python 错误:Py_Initialize:没有名为 Encodings 的模块
【发布时间】:2018-03-27 08:23:51
【问题描述】:

我正在尝试使用 Django + mod_wsgi 和 apache 在网络浏览器中加载网站。我遇到了与This Question Here 完全相同的问题,但在那里找到的解决方案不适用于我的情况。

这是我的 httpd-vhosts.conf 设置:

WSGIDaemonProcess binshellpress.com python-home=/usr/local/docs/binshellpress-production/virtpy/ python-path=/usr/local/docs/binshellpress-production/virtpy/lib/python3.6/
WSGIProcessGroup binshellpress.com
WSGIApplicationGroup %{GLOBAL}

<VirtualHost *:80>
  ServerAdmin webmaster@binshellpress.com
  DocumentRoot "/usr/local/docs/binshellpress-production/root"
  ServerName binshellpress.com
  ServerAlias www.binshellpress.com
  ErrorLog "/var/log/httpd/bsp-error_log"
  CustomLog "/var/log/httpd/bsp-access_log" common

  Alias /robots.txt /usr/local/docs/binshellpress-production/static/robots.txt
  Alias /favicon.ico /usr/local/docs/binshellpress-production/static/favicon.ico

  Alias /media/ /usr/local/docs/binshellpress-production/media
  Alias /static/ /usr/local/docs/binshellpress-production/static

  <Directory /usr/local/docs/binshellpress-production/static>
    Require all granted
  </Directory>

  <Directory /usr/local/docs/binshellpress-production/media>
    Require all granted
  </Directory>

  WSGIScriptAlias / /usr/local/docs/binshellpress-production/binshellpress/wsgi.py process-group=binshellpress.com

  <Directory /usr/local/docs/binshellpress-production/binshellpress>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>
</Virtualhost>

我在/usr/local/docs/binshellpress-production/virtpy 设置了一个虚拟环境。我已重建 mod_wsgi 以明确使用该虚拟环境。我已经按照This Question的回答中的描述进行了权限修改@

没有变化。

我很绝望。我一直在寻找。我不知道该怎么办。请帮我。求求你了。

谢谢你,任何事情,谢谢,请帮助我,谢谢。

【问题讨论】:

  • 在服务器上,作为用户运行 Apache,您是否尝试过激活 virtualenv 并执行 python manage.py runserver?这通常会暴露潜在的问题。最好使用系统范围的 Python 安装来编译 mod_wsgi,而不是在 virtualenv 中,但它必须与构建 virtualenv 所针对的版本相同。
  • 即使使用虚拟环境,也不一定要针对系统 Python 编译 mod_wsgi。事实上,当你在虚拟环境中运行pip install mod_wsgi时,它别无选择。

标签: python django apache permissions mod-wsgi


【解决方案1】:

首先,通过运行你想使用的命令行 Python 检查python-home 的值是否正确并执行:

import sys
sys.prefix

应该是相同的值。

还要注意:

python-path=/usr/local/docs/binshellpress-production/virtpy/lib/python3.6/

应该不需要,我不明白你为什么要添加它。

接下来,运行签入:

mod_wsgi 链接到哪些库和位置?

如果您的 mod_wsgi 二进制文件肯定是针对正确的 Python 版本编译的,那么唯一可能的另一个问题是它是非标准 Python 安装而不是系统 Python。如果是这种情况并且未正确链接,则可能是在查找系统 Python 共享库,而不是为您单独的 Python 安装找到的共享库。

再次从虚拟环境中的 Python 命令行尝试:

import sys
sys.real_prefix

你会得到什么?

【讨论】:

  • 事实证明,python 3.X 分支库安装到了一个非标准位置,这导致了问题,哈哈。谢谢,格雷厄姆! :D
  • 你是如何解决的......我遇到了同样的问题......我将我的 python 主页指向我的虚拟环境,但它不起作用??
  • modwsgi.readthedocs.io/en/develop/user-guides/… 不要使用python-path,使用python-home
猜你喜欢
  • 2017-01-03
  • 1970-01-01
  • 2019-11-13
  • 2014-05-16
  • 2019-08-31
  • 2012-07-14
  • 1970-01-01
  • 2016-06-15
  • 2018-03-10
相关资源
最近更新 更多